Spring框架-使用P命名空間進行注入


這里需要注意的一點是,P命名空間進行注入,是建立在設值注入的基礎上的,也就是說,一定要有setter方法才行,同時還要引入P命名空間的頭信息(這點千萬別忘記了)

典型的三層架構:

package dao; import entity.User; /** * 增加DAO接口,定義了所需的持久化方法 */
public interface UserDao { public void save(User user); }
 1 package dao.impl;  2 
 3 import dao.UserDao;  4 import entity.User;  5 
 6 /**
 7  * 用戶DAO類,實現IDao接口,負責User類的持久化操作  8  */
 9 public class UserDaoImpl implements UserDao { 10 
11     public void save(User user) { 12         // 這里並未實現完整的數據庫操作,僅為說明問題
13         System.out.println("保存用戶信息到數據庫"); 14  } 15 }
 1 package service;  2 
 3 import entity.User;  4 
 5 /**
 6  * 用戶業務接口,定義了所需的業務方法  7  */
 8 public interface UserService {  9     public void addNewUser(User user); 10 }
 1 package service.impl;  2 
 3 import service.UserService;  4 import dao.UserDao;  5 import entity.User;  6 
 7 /**
 8  * 用戶業務類,實現對User功能的業務管理  9  */
10 public class UserServiceImpl implements UserService { 11 
12     // 聲明接口類型的引用,和具體實現類解耦合
13     private UserDao dao; 14 
15     
16 
17     // 生成無參構造方法
18     public UserServiceImpl() { 19 
20  } 21 
22     // 帶參數構造方法 為dao進行賦值
23     public UserServiceImpl(UserDao dao) { 24         this.dao = dao; 25  } 26 
27 
28     public UserDao getDao() { 29         return dao; 30  } 31 
32     // dao 屬性的setter訪問器,會被Spring調用,實現設值注入
33     public void setDao(UserDao dao) { 34         this.dao = dao; 35  } 36 
37     public void addNewUser(User user) { 38         // 調用用戶DAO的方法保存用戶信息
39  dao.save(user); 40         System.out.println("注入進去的user對象的信息是:"+user.toString()); 41  } 42 }

實體類:(這里也進行了相應的改動)

 1 package entity;  2 
 3 /**
 4  * 用戶實體類  5  */
 6 public class User implements java.io.Serializable {  7     private Integer id; // 用戶ID
 8     private String username; // 用戶名
 9     private String password; // 密碼
10     private String email; // 電子郵件
11     private int age;//年齡
12     
13 
14  @Override 15     public String toString() { 16         return "User [id=" + id + ", username=" + username + ", password="
17                 + password + ", email=" + email + ", age=" + age 18                 + ", getAge()=" + getAge() + ", getId()=" + getId() 19                 + ", getUsername()=" + getUsername() + ", getPassword()="
20                 + getPassword() + ", getEmail()=" + getEmail() 21                 + ", getClass()=" + getClass() + ", hashCode()=" + hashCode() 22                 + ", toString()=" + super.toString() + "]"; 23  } 24 
25     public int getAge() { 26         return age; 27  } 28 
29     public void setAge(int age) { 30         this.age = age; 31  } 32 
33     // getter & setter
34     public Integer getId() { 35         return id; 36  } 37 
38     public void setId(Integer id) { 39         this.id = id; 40  } 41 
42     public String getUsername() { 43         return username; 44  } 45 
46     public void setUsername(String username) { 47         this.username = username; 48  } 49 
50     public String getPassword() { 51         return password; 52  } 53 
54     public void setPassword(String password) { 55         this.password = password; 56  } 57 
58     public String getEmail() { 59         return email; 60  } 61 
62     public void setEmail(String email) { 63         this.email = email; 64  } 65 
66 }

編寫測試方法:

 1 package test;  2 
 3 import org.junit.Test;  4 import org.springframework.context.ApplicationContext;  5 import org.springframework.context.support.ClassPathXmlApplicationContext;  6 
 7 import service.UserService;  8 import service.impl.UserServiceImpl;  9 
10 import entity.User; 11 
12 
13 public class AopTest { 14 
15  @Test 16     public void aopTest() { 17         ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); 18         UserService service = (UserService) ctx.getBean("userService"); 19         User user = (User) ctx.getBean("user"); 20  service.addNewUser(user); 21  } 22 
23 }

運行結果:

保存用戶信息到數據庫
注入進去的user對象的信息是:User [id=null, username=強強, password=22222, email=1111@qq.com, age=15, getAge()=15, getId()=null, getUsername()=強強, getPassword()=22222, getEmail()=1111@qq.com, getClass()=class entity.User, hashCode()=1032986144, toString()=entity.User@3d921e20]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM