1 @Configuration
- 从Spring3.0开始可以使用@Configuration定义配置类,可替换xml配置文件
- 相当于根标签
- 配置类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义对象,初始化Spring容器
SpringConfiguration
@Configuration
@ComponentScan(basePackages = "com.cc")
public class SpringConfiguration {
//spring容器初始化时,会调用配置类的无参构造函数
public SpringConfiguration(){
System.out.println("容器启动初始化");
}
}
测试
@Test
public void testToC3(){
//创建
ApplicationContext context=new AnnotationConfigApplicationContext(SpringConfiguration.class);
//从容器中获取bean的实例
//方式1:根据类型容器中获取bean实例
UserServiceImpl service1 = context.getBean(UserServiceImpl.class);
service1.saveUser(new User(123,"纯注解开发"));
}
输出结果
容器启动初始化
userDao: saveUser:id为123, name为:纯注解开发
2 @Bean
@Bean标注在方法上(返回某个实例的方法),等价于spring配置文件中的标签
- 作用为:注册bean对象
- 主要用来配置非自定义的bean,比如DruidDataSource、SqlSessionFactory
3 @PropertySource
加载properties配置文件,context:property-placeholder标签
@Configuration
@PropertySource("classpath:user.properties"),
public class ProertiesConfig {
@Value("${user.id}")
private int userId;
@Value("${user.name}")
private String userName;
@Bean("userServiceImpl")
public UserService getUserService(){
return new UserServiceImpl(new User(userId,userName));
}
}
4 @Import
在主配置类中导入副配置类
在SpringConfig中导入ProertiesConfig
@Import(ProertiesConfig.class)