1. 程式人生 > >3.IOC的配置與應用(annotation的方式)

3.IOC的配置與應用(annotation的方式)

prot epo println 字母 set return 方法 public 重要

自動裝載

[email protected]

    

 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 }

[email protected](重要) 

 1 public class UserService {
 2         
 3     private
UserDAO userDAO; 4 public UserDAO getUserDAO() { 5 return userDAO; 6 } 7 8 /* 默認按名稱,名稱找不到,按類型( [email protected],那麽默認使用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 }

   

[email protected] @Service @Controller @Repository(取代 bean 標簽,上面用於取代 property標簽)

    初始化的名字默認為類名首字母小寫

    可以指定初始化bean的名字

  

  

[email protected]

[email protected] 用來指定 bean 的 作用範圍,就是之前 xml文件中 scope 屬性的作用
  * 默認 為 單例 ,singleton 可以指定為prototype
  * */
[email protected]("singleton")

  

  

[email protected] = 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     }

  

  

3.IOC的配置與應用(annotation的方式)