Spring Boot学习--3 AutoConfiguration

1. 自动配置原理:

spring boot项目的入口类的注解@SpringBootApplication引入了@EnableAutoConfiguration。后者又通过@Import引入了EnableAutoConfigurationImportSelector类, EnableAutoConfigurationImportSelector类通过方法调用链selectImports()->getCandidateConfigurations->SpringFactoriesLoader.loadFactoryNames(),获得了在spring-boot-autoconfig jar包中META-INF/spring.factories文件的org.springframework.boot.autoconfigure.EnableAutoConfiguration属性所要求的所有需要自动配置的AutoConfiguration。这些自动配置的AutoConfiguration一般由@Configuration注解,由其同一目录下的相关基于属性的Bean定义属性,并且在这些AutoConfiguration中包含了返回Bean的由@Conditional+条件进行注解的方法,因此在项目中可以通过@Autowired、@Resource等方式直接进行注入。(以上原理说明均由spring boot源代码得到)。

2. 示例的步骤:

步骤一:建立自动配置的maven组件包。该包模拟autoconfig组件建立了基于properties的安全类型的Bean(即@ConfigurationProperties注解的Bean),应用该Bean的自动配置的AutoConfiguration(由@Configuration注解,使用上一Bean的属性),AutoConfiguration中包含应用上一Bean属性的服务Bean, 并在资源目录下建立META-INF/spring.factories文件,文件中为org.springframework.boot.autoconfigure.EnableAutoConfiguration属性确定了AutoCOnfiguration的全限定名。最后按照组件包(mvn:install)。

步骤二:建立一个依赖web的spring boot项目。项目还依赖了上面建立的maven组件,在入口类中通过@Autowired注入maven组件中的服务Bean,再在入口类的@RequestMapping注解的方法中使用该服务Bean,从而验证maven组件自动配置的正确性。

3. 示例

步骤一:

demo-autoconfig maven组件的pom.xml

依赖autoconfig组件的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example.demo</groupId>
  <artifactId>demo-autoconfig</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>demo-autoconfig</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <org.springframework.version>2.0.2.RELEASE</org.springframework.version>
  </properties>

  <dependencies>

  <dependency>
  <!-- autoconfigure support -->
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-autoconfigure&l
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值