一 配置类注解
1.1 @Configuration @Bean
@Configuration可理解为用spring的时候xml里面的<beans>标签
@Bean可理解为用spring的时候xml里面的<bean>标签
你不需要将所有的 @configuration 放进一个单独的类,@Import注解可以用来导入其他配置类。另外,你也可以使用 @ComponentScan 注解自动收集所有Spring组件, 包括 @Configuration类。
1.2 @ImportResource
如果必须使用XML配置,建议你仍旧从一个 @Configuration 类开始,然后使用 @ImportResource 注解加载XML文件
1.3 @EnableAutoConfiguration @SpringBootApplication
实现自动配置有两种可选方式,分别是将@EnableAutoConfiguration或 @SpringBootApplication 注解到 @Configuration类上。
注:你应该只添加一个 @EnableAutoConfiguration 注解,通常建议将它t添加到主配置类(
primary @Configuration)上。
很多Spring Boot开发者经常使用@Configuration,@EnableAutoConfiguration,@ComponentScan注解他们的main类,由于这些注解如此频繁地一块使用(特别是遵循以上最佳实践的时候),Spring Boot就提供了一个方便的@SpringBootApplication注解作为代替。
@SpringBootApplication注解等价于以默认属性使用@Configuration,@EnableAutoConfiguration和@ComponentScan :
“@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}”
摘录来自: qibaoguang. “Spring Boot参考指南。” iBooks.
如果发现启用了不想要的自动配置项,你可以使用@EnableAutoConfiguration注解的exclude属性禁用它们:
@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
}
二 Spring Beans和依赖注入
我们经常使用@ComponentScan注解搜索beans,并结合@Autowired构造器注入。
通常建议将应用的main类(Application.java)放到其他类所在包的顶层(root package),并将@SpringBootApplication放在你的main类上,这样就隐式地定义了一个基础的包搜索路径(search package):
com
+- example
+- myproject
+- Application.java
|
+- domain
| +- Customer.java
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- web
+- CustomerController.java