@SpringBootApplication
包含三个注解:@ComponentScan、@EnableAutoConfiguration、@SpringBootConfiguration
@ComponentScan:组件扫描(扫描@Component、@Controller、@Service、@Repository等注解,通过类的反射机制注入Spring的IOC容器;并且@Controller、@Service、@Repository注解底层就是@Component,@Component注解是Spring框架注解)
@EnableAutoConfiguration:开启自动配置(使用注解不需要定义xml文件配置表现层、业务层所有类的bean标签;引入启动器依赖,例如mvc启动器依赖的Maven坐标,该注解自动配置处理器映射器、处理器适配器、视图解析器,不需要在配置文件xml中配置)
@SpringBootConfiguration:底层就是一个@Configuration;@Configuration注解声明当前类为文件配置类,@Configuration注解是Spring框架注解
@ConfigurationProperties
获取SpringBoot框架默认加载application.properties配置文件中的参数值,并且使用类加上@EnableConfigurationProperties(被开启类名.class)通过@Autowired注解、使用类带参构造方法、@Bean注解定义的方法形参、@Bean注解定义的方法上直接定义@ConfigurationProperties注解获取值,四种方法注入文件配置类(被@ConfigurationProperties注解定义的文件配置读取类)
四种方法注入文件配置类
1、@Autowired注入
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfiguration {
@Autowired
private JdbcProperties jdbcProperties;
@Bean
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(jdbcProperties.getUrl());
dataSource.setDriverClassName(jdbcProperties.getDriverClassName());
dataSource.setUsername(jdbcProperties.getUsername());
dataSource.setPassword(jdbcProperties.getPassword());
return dataSource;
}
}
2、构造函数注入
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfiguration {
private JdbcProperties jdbcProperties;
public JdbcConfiguration(JdbcProperties jdbcProperties) {
this.jdbcProperties = jdbcProperties;
}
@Bean
public DataSource dataSource() {
}
}
3、@Bean方法的参数注入
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfiguration {
@Bean
public DataSource dataSource(JdbcProperties jdbcProperties) {
}
}
4、@ConfigurationProperties直接注入
@Configuration
public class JdbcConfiguration {
@Bean
// 声明要注入的属性前缀,SpringBoot会自动把相关属性通过set方法注入到DataSource中
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
return dataSource;
}
}`