在ssm里面我们接触了springboot,springboot最大优点就是自动装配,自动装配里面最关键就是SpringBootApplication。
SpringBootApplication包括三个关键注解。
第一个:SpringBootConfiguration,继承自Configuration,表示这是一个配置类
第二个:ComponentScan,对扫描到的数据进行过滤,如果值是true,表示过滤,false表示保留
第三个:EnableAutoConfiguration他底层又包括两个关键注解。EnableAutoConfiguration简单点说就是Spring Boot根据依赖中的jar包,自动选择实例化某些配置,配置类必须有@Configuration注解。
里面包括的两个注解是:AutoConfigurationPackage、Import({AutoConfigurationImportSelector.class})。
AutoConfigurationPackage:
里面引入了Registrar类。
第一个方法是向容器里面引入组件,第二个方法是组件的注入。这最终向容器注入组件 名称是全类名 只是PackageImports 里面包含一个集合 集合中存储packageNames 也就是我们注解所在包。
Import({AutoConfigurationImportSelector.class})
selectImports是AutoConfigurationImportSelector的核心方法。 该方法的功能主要是以下三点:
- 获取META-INF/spring.factories中EnableAutoConfiguration所对应的Configuration类列表
- 由@EnableAutoConfiguration注解中的exclude/excludeName参数选一遍
- 再由私有内部类ConfigurationClassFilter选一遍,即不满足@Conditional的配置类
和传统的spring项目相比,SpringBoot有一些新的方式。
第一个maven配置的简化:我们不再需要单独的处理spring的各个模块,并且可以直接实验HikariCP的连接池,不过还是需要配置奥。我们还能直接实验Logback日志框架。
第二个就是出现了新的配置方式,配置文件,我们有两种,第一个properties。第二种是yaml,用冒号空格换行表示层级关系。并且yaml是结合了xml,json等语法的新语言,应用在配置文件。注解@Configuration用于类上面,并且表示该类是配置类,@Bean,用于方法上面,表示方法的返回对象为SpringIoC,容器管理的bean。
第三是出现了新的运行方式:我们内置了web容器,可以直接支持tomcat,jetty等。
第四是新的发布形式:项目不再打包成war,而是jar。