3.IOC的配置与应用(annotation的方式)

自动装载

  @Autowired

    

 1 public class UserService {
 2         
 3     private UserDAO userDAO;
 4     public UserDAO getUserDAO() {
 5         return userDAO;
 6     }
 7     
 8     // 默认按照 bean 的类型注入  (by type)
 9     // 如果想用 byName 使用 @Qulifier
10     // 注解最好放到 set方法上,不要放到字段上(第三种注入形式),会破坏封装性,类似 hibernate
11     @Autowired
12     public void setUserDAO(@Qualifier("u") UserDAO userDAO) {
13         this.userDAO = userDAO;
14     }
15 
16     public void add(User user) {
17         userDAO.save(user);
18     }
19 }

 

  @Resource(重要) 

 1 public class UserService {
 2         
 3     private UserDAO userDAO;
 4     public UserDAO getUserDAO() {
 5         return userDAO;
 6     }
 7 
 8     /* 默认按名称,名称找不到,按类型( 如果@Resource中没有指定名称,那么默认使用userDAO)
 9      * 当不存在 对应名称的 bean对象时,则按 类型 再找一遍,满足UserDAO.class 就算符合
10      * 加上name 属性 代表 按名称去找(一般都加上 name)
11      * 推荐使用
12      * annotation不足:如果没有源码,就无法运用annotation,只能使用xml
13      * */
14     @Resource(name="userDAO")
15     public void setUserDAO(UserDAO userDAO) {
16         this.userDAO = userDAO;
17     }
18 
19     public void add(User user) {
20         userDAO.save(user);
21     }
22 }

 

   

  @Component @Service @Controller @Repository(取代 bean 标签,上面用于取代 property标签)

    初始化的名字默认为类名首字母小写

    可以指定初始化bean的名字

  

  

  @Scope  

  /*@Scope 用来指定 bean 的 作用范围,就是之前 xml文件中 scope 属性的作用
  * 默认 为 单例 ,singleton 可以指定为prototype
  * */
  @Scope("singleton")

  

  

  @PostConstruct = init-method; @PreDestroy = destroy-method

 1 /*相当于 xml 中 的 init-method*/
 2     @PostConstruct
 3     public void postConstruct() {
 4         System.out.println("init!!");
 5     }
 6     
 7     /*相当于 xml 中 的 destroy-method*/
 8     @PreDestroy
 9     public void preDestroy() {
10         System.out.println("destroy!!");
11     }

 

 

  

  

 

posted @ 2017-08-19 15:14  白日梦想家12138  阅读(219)  评论(0编辑  收藏  举报