博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学JAVA吗同学,这篇Sping boot 确定不了解下么?
阅读量:4019 次
发布时间:2019-05-24

本文共 2918 字,大约阅读时间需要 9 分钟。

从最初的单体架构,到现在的微服务架构,Spring Boot 都发挥着超大的作用,它简洁快速开发的魅力,值得推广到公司的任何项目中。目前,Spring Boot 拥有超棒的特性和它集成许多的优秀技术!

SpringBoot框架中还有两个非常重要的策略:开箱即用和约定优于配置。

SpringBoot 是简化 Spring 应用开发的一个框架。他整合了 Spring 的技术栈,提供各种标准化的默认配置。使得我们可以快速开发 Spring 项目,免掉 xml 配置的麻烦。降低 Spring 项目的成本。

一、SpringBoot 外部配置文件加载顺序

这个挺多的,我们就几个重要的。

  • 高优先级的会覆盖低优先级的。

  • 命令行上的参数配置是优先级最高的。

  • jar 包外的带 profile 的配置文件。

  • jar 包内的带 profile 的配置文件。

  • jar 包外的不带 profile 的配置文件。

  • jar 包内的不带 profile 的配置文件。

二、SpringBoot 如何扩展 SpringMVC 的配置

通过建立自己的类继承 WebMvcConfigurerAdapter ,在类上面打上注解 @Configuration 。然后重写里面的方法即可。容器中的所有的 WebMvcConfigurer 会一起起作用。

在这里插入图片描述

如果我们不想使用 mvc 的自动配置,全部使用自己的。可以在配置类上增加注解 @EnableWebMvc 。这个注解可以导入一个 webmvcconfigurationsupport 的类。然后 mvc 的自动配置类上的注解有这么一句话,有一个条件注解,当没有上面那个类的时候,才生效。

笔者整理了最新各路知识点合集包含有:JVM、MySQL、MyBatis、Dubbo、Liunx、TomCat等多种知识点,如果各位有需要的话欢迎加入我们的讨论群来一起交流学习领取资料 暗号:qf

在这里插入图片描述

三、Spring控制反转(IOC)

Spring IoC 的实现机制

Spring 中的 IoC 的实现原理就是工厂模式加反射机制。

interface Fruit {
public abstract void eat(); } class Apple implements Fruit {
public void eat(){
System.out.println("Apple"); }} class Orange implements Fruit {
public void eat(){
System.out.println("Orange"); }} class Factory {
public static Fruit getInstance(String ClassName) {
Fruit f=null; try {
f=(Fruit)Class.forName(ClassName).newInstance(); } catch (Exception e) {
e.printStackTrace(); } return f; }} class Client {
public static void main(String[] a) {
Fruit f=Factory.getInstance("io.github.dunwu.spring.Apple"); if(f!=null){
f.eat(); } }}

四、BeanFactory 和 ApplicationContext有什么区别?

BeanFactory和ApplicationContext是Spring的两大核心接口,都可以当做Spring的容器。其中ApplicationContext是BeanFactory的子接口。

依赖关系

  • BeanFactory:是Spring里面最底层的接口,包含了各种Bean的定义,读取bean配置文档,管理bean的加载、实例化,控制bean的生命周期,维护bean之间的依赖关系。

ApplicationContext接口作为BeanFactory的派生,除了提供BeanFactory所具有的功能外,还提供了更完整的框架功能:

-继承MessageSource,因此支持国际化。

  • 统一的资源文件访问方式。
  • 提供在监听器中注册bean的事件。
  • 同时加载多个配置文件。
    载入多个(有继承关系)上下文 ,使得每一个上下文都专注于一个特定的层次,比如应用的web层。

加载方式

BeanFactroy采用的是延迟加载形式来注入Bean的,即只有在使用到某个Bean时(调用getBean()),才对该Bean进行加载实例化。这样,我们就不能发现一些存在的Spring的配置问题。如果Bean的某一个属性没有注入,BeanFacotry加载后,直至第一次使用调用getBean方法才会抛出异常。

ApplicationContext,它是在容器启动时,一次性创建了所有的Bean。这样,在容器启动时,我们就可以发现Spring中存在的配置错误,这样有利于检查所依赖属性是否注入。 ApplicationContext启动后预载入所有的单实例Bean,通过预载入单实例bean ,确保当你需要的时候,你就不用等待,因为它们已经创建好了。

相对于基本的BeanFactory,ApplicationContext 唯一的不足是占用内存空间。当应用程序配置Bean较多时,程序启动较慢。

创建方式

BeanFactory通常以编程的方式被创建,ApplicationContext还能以声明的方式创建,如使用ContextLoader。

注册方式

BeanFactory和ApplicationContext都支持BeanPostProcessor、BeanFactoryPostProcessor的使用,但两者之间的区别是:BeanFactory需要手动注册,而ApplicationContext则是自动注册。

SpringBoot 整合 redis

引入 redis 的启动器。 data-redis 。引入后再配置文件进行配置 redis 的 host 。然后通过 redistemplate 就可以进行操作了。会乱码,默认使用的是 jdk 的序列化 json 器。需要改成 jackson 。自己实现一个 RedisTmeplate 。泛型为 object , object 。再实现 CacheManager 。就会发现缓存变成 json 形式了。

在这里插入图片描述

题外话

笔者在这里给各位整合最新的真实大厂面试题,有需要的小伙伴可以加群: 暗号:qf

来自行领取
在这里插入图片描述

转载地址:http://ghefi.baihongyu.com/

你可能感兴趣的文章
mint/ubuntu安装搜狗输入法
查看>>
C++动态申请数组和参数传递问题
查看>>
opencv学习——在MFC中读取和显示图像
查看>>
retext出现Could not parse file contents, check if you have the necessary module installed解决方案
查看>>
pyQt不同窗体间的值传递(一)——对话框关闭时返回值给主窗口
查看>>
linux mint下使用外部SMTP(如网易yeah.net)发邮件
查看>>
北京联通华为光猫HG8346R破解改桥接
查看>>
python使用win32*模块模拟人工操作——城通网盘下载器(一)
查看>>
python append 与浅拷贝
查看>>
Matlab与CUDA C的混合编程配置出现的问题及解决方案
查看>>
2017阿里内推笔试题--算法工程师(运筹优化)
查看>>
python自动化工具之pywinauto(零)
查看>>
python自动化工具之pywinauto(四)——批量转换exe视频
查看>>
python一句话之利用文件对话框获取文件路径
查看>>
PaperDownloader——文献命名6起来
查看>>
PaperDownloader 1.5.1——更加人性化的文献下载命名解决方案
查看>>
如何将PaperDownloader下载的文献存放到任意位置
查看>>
C/C++中关于动态生成一维数组和二维数组的学习
查看>>
系统架构:Web应用架构的新趋势---前端和后端分离的一点想法
查看>>
JVM最简生存指南
查看>>