Java Config的优势
- 完全摆脱XML的束缚, 使用独立Java类管理对象与依赖
- 注解配置相对分散, 利用Java Config可对配置集中管理
- 可以在编译时进行依赖检查, 不容易出错
Java Config核心注解
注解 | 说明 |
---|---|
@Configuration | 描述类, 说明当前类是Java Config配置类, 完全替代XML文件 |
@Bean | 描述方法, 方法返回对象将IoC容器管理, beanId默认为方法名 |
@ImportResource | 描述类, 加载静态文件, 可使用@Value注解获取 |
@ComponentScan | 描述类, 同XML的<context:compoment-scan>标签 |
在任意包下创建Config类, 示例:
@Configuration //当前类是一个配置类, 用于替代applicationContext.xml
public class Config{
@Bean //Java Config利用方法创建对象, 将方法返回对象放入容器, beanId=方法名
public UserDao userDao(){
UserDao userDao=new UserDao();
return userDao;
}
@Bean
public UserService userService(){
UserService userService =new UserService();
return userService;
}
}
IoC容器初始化方法, 将有所变化
ApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
如何依赖注入
@Bean //如果需要依赖注入, 则直接写在参数里即可
public UserService userService(UserDao userDao){
UserService userService = new UserService();
userService.setUserDao(userDao);
return userService;
}
自动根据参数名或类型进行自动注入, 方法上面使用注解@Primary
, 代表优先导入
方法上面使用@Scope
注解, 可以设置是单例还是多例
类上面使用注解@ComponentScan(basePackge="com.imooc")
, 对其他类进行注解扫描