什么是Springboot
通过依赖注入和面向切面编程实现的重量级框架。但是组件配置是轻量级的。比如开启事务管理和springmvc话是需要用xml或java进行显式配置包括使用第三方库也需要进行配置。需要耗费很多精力,除此之外依赖管理也有很大损耗因为除了项目里有那些库以外,还要注意不能让他们有所冲突。Springboot解决了这些问题。
springboot的四个核心
自动配置:针对很多spring应用程序的常见应用功能,Springboot能自动提供相关配置。
起步依赖: 告诉Springboot需要什么功能,它就能引入需要的库。
命令行界面:这是Springboot的可选特性,借此你只需要写代码就能完成完整的应用程序,无需传统项目的构建。
Actuator:让你能够深入运行Springboot中的应用程序,一探究竟。
起步依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
比如构建项目后很多的id有spring-boot-starter的前缀,如果没有springboot的起步依赖,那么你需要考虑你项目中使用的这些框架和技术是否兼容。如果想知道依赖的版本可以用mvn denpendency:tree查看。
自动配置
在向程序加入springboot时,有个名为spring-boot-autoconfigure的jar文件,其中包含了很多配置类。每个配置类都在应用程序的classpath里。它们使用了spring4.0引入的新特性,条件化配置。比如@conditionalOnClass注解需要判断classpath里是否有指定的类如果有才会执行。如果想要覆盖springboot的自动配置只需要手动编写一个显示的配置即可。springboot会发现你的配置,随后降低自动配置的优先级。
比如Springboot的DataSourceAutoConfiguration中定义的JdbcTemplate Bean用到了注解@Bean,@ConditionalOnMissingBean(JdbcOperations.class)分别表示
在需要的时候可以配置出一个JdbcTemplateBean;
要求当前不存在类型JdbcOperations(JdbcTemplate 实现了该接口)的Bean时才生效;
Spring Boot的设计是加载应用级配置随后在考虑自动配置类。也就是说如果你已经配置了一个JdbcTemplate Bean,那么执行的时候已经存在一个JdbcOperations类型的Bean了。也就不会执行注解@ConditionalOnMissingBean(JdbcOperations.class)下的方法。