1. 程式人生 > >Struts2整合Spring從xml到註解

Struts2整合Spring從xml到註解

  1. @Namespace("/")  
  2. @Component(value="userLogin")  
  3. @Scope(value="prototype")  
  4. publicclass LoginAction extends ActionSupport {  
  5.     public LoginAction() {  
  6.         super();  
  7.         // TODO Auto-generated constructor stub
  8.         System.out.println("action:"+this.hashCode());  
  9.     }  
  10.     @Autowired
  11.     private
     ILoginBiz biz;  
  12.     private User user;  
  13.     public User getUser() {  
  14.         return user;  
  15.     }  
  16.     publicvoid setUser(User user) {  
  17.         this.user = user;  
  18.     }  
  19.     @Autowired
  20.     publicvoid setBiz(ILoginBiz biz) {  
  21.         this.biz = biz;  
  22.     }  
  23.     @Override
  24.     @Action(value = "hello", results = { 
    @Result(name = "success", location = "/success.jsp"),@Result(name="input",location="/index.jsp")})  
  25.     public String execute() throws Exception {  
  26.         // TODO Auto-generated method stub
  27.         System.out.println("biz:"+this.biz.hashCode());  
  28.         User u=biz.login(this.getUser());  
  29.         if(u!=
    null){  
  30.             return SUCCESS;  
  31.         }  
  32.         return INPUT;  
  33.     }  
  34. }  
@Component 有一個可選的入參,用於指定 Bean 的名稱。一般情況下,Bean 都是 singleton 的,需要注入 Bean 的地方僅需要通過 byType 策略就可以自動注入了,所以大可不必指定 Bean 的名稱。除了提供 @Component 註釋外,還定義了幾個擁有特殊語義的註釋,它們分別是:@Repository、@Service 和 @Controller。在目前的 Spring 版本中,這 3 個註釋和 @Component 是等效的,但是從註釋類的命名上,很容易看出這 3 個註釋分別和持久層、業務層和控制層(Web 層)相對應。雖然目前這 3 個註釋和 @Component 相比沒有什麼新意,但 Spring 將在以後的版本中為它們新增特殊的功能。所以,如果 Web 應用程式採用了經典的三層分層結構的話,最好在持久層、業務層和控制層分別採用 @Repository、@Service 和 @Controller 對分層中的類進行註釋,而用 @Component 對那些比較中立的類進行註釋。