Springboot 大揭秘

 

springmvc ---> 相应web开发配置 --- >applicationcontext.xml --->-bean相关配置

                                 springmvc.xml --->component-scan :包的路径扫描 ; jsp的解析器 prefix 前缀   suffix后缀的配置

                                 web.xml--->dispatcherservlet:springmvc.xml配置文件的引入

这只是原架构开发web项目中需要配置的文件的一小部分   配置文件很繁杂  

 

Springboot:方便帮你基于spring搭建web工程,以及相应的开发;

Springboot是基于framework之上搭建的;

 

Springboot是怎么自动配置的呢?

Springboot的启动内有一个@springbootapplication的注解;

@springbootapplication它是个组合注解它主要包含@springbootconfiguration @componentscan @enableautoconfiguration

 

额外说下:

Spring源码设计者它们是怎么来操作和管理包含了注解的类呢?

如:@controller   @service  @repository @component  我们都知道,如果含有这些注解,它的意思都是交由ioc容器管理;

Spring源码设计者,ioc容器: 都是先进行包路径的扫描;然后解析每个路径下的各类,然后利用反射的方式进行找到其注解(如:是否含义@controller),然后创建其对象,然后在用map存储起来,如map.put(’usercontollerr’,new usercontroller());外界就可以通过context.getBean(‘usercontroller’)就可以取到这个对象; 这也是ioc容器管理对象的实现过程;

 

@ springbootconfiguration 它是个组合注解 它包含 @configuration ;而@configuration它又包含@component; @component的意思都是将该类交由ioc容器管理;@configuration额外的一个作用就是让当前的bean成为一个配置bean(就是让当前的类成为一个配置类)

 

在原来web开发中  我们都会见一个controller类并加上@controller注解  再在spring-mvc.properties里配置<componet-scan> 及其路径 来进行扫描其路径下所包含注解的类 ;

 

而springboot怎么实现含有注解类的扫描呢?

 

@componentscan 就是相当于<componet-scan> ;@componentscan里加上扫描路径;

 

@componentscan+@springbootconfiguration:一结合起来,就能找 自动装配,我们用户自定义的类 交给ioc容器进行管理

@componentscan扫描的路径就是根路径

 

假如说程序中默认用到的配置,用到的又不是用户自定义,系统自带的;如

<bean name=”dataSource” class=”xxxx.xxxx.yyy.DataSource”/> 

这个就要用到@Enableautoconfiguration

在@Enableautoconfiguration 里导入了AutoconfigurationImportseletor.class这个类,而@enableautoconfiguration就是通过这个类把系统本身的配置加载进去 扫描的路径是在在meta-inf/spring.factories中

 

所以:

      @Enablautoconfuguration让spring自动化配置机制 注重系统本身配置的自动化加载配置

      @springbootconfiguration @componentscan注重用户自定义配置的自动加载配置


 

Springboot内置容器 Tomcat jetty

 

Tomcat启动类属于系统内部配置    那么配置就会在meta-inf/spring.factories中;交给@Enablautoconfuguration托管  通过工厂模式设计 

 

 

Springapplicatin.run()  执行时  都做了哪些操作

  1. 创建springapplication应用
  2. Run方法的启动:执行以下操作

 

获取Spring context上下文  ioc容器; bean的装配

Listeners监听器启动  filter 过滤器启动  监听器/过滤器类的全路径 通过@Eableautoconfiguration获取 配置肯定在meta-inf/spring.factories中

图标设置 日志打印  时间打印

Web servlet 的判断

Web容器的启动

 

Springboot Starter引入就是把原来的

1.引入jar

2.配置文件

3.配置需要使用的类

4.测试代码

都封装在了一个starter中

在springboot配置文件里 直接引入某个starter就可以完成你想要的功能

如果你想使用mybatis 你直接引用spring-boot-starter-mybatis就可以啦