Spring Roo ioc 和 webmvc中的註解 – JAVA編程語言程序開發技術文章

最近在用Spring Roo開發一個小項目,表現層用到瞭spring webmvc,spring  webmvc是完全基於註解的,感覺挺方便的。
Spring Roo是個好東西啊,用它開發CRUD操作全部自動生成,java web開發效率至少提高瞭3倍,有點ROR開發的感覺瞭,並且它是基於Spring,Hibernate等常用框架的,程序員和客戶都容易接受,呵呵。

1:spring ioc  bean註解
在類上使用@Component註解,表示該類定義為Spring管理Bean,使用默認value(可選)屬性表示Bean標識符。
 
Java代碼 
@Component("component")   
public class TestCompoment {   
    @Autowired   
    private ApplicationContext ctx;   
    public ApplicationContext getCtx() {   
        return ctx;   
    }   
}   
 同類型的還有@Service在業務層,@Controller在表現層,@Repository在dao層
 
Java代碼 
@Service("testService")  //括號中表示實例的名稱 
public class TestServiceImpl {   
    @Autowired   
    @Qualifier("testHibernateDao")  //@Qualifier 註釋指定註入 Bean 的名稱,這樣歧義就消除瞭 
    private TestHibernateDaoImpl dao;   
    public TestHibernateDaoImpl getDao() {   
        return dao;   
    }   
}   
 @Autowired暴露的required屬性,這是承擔著依賴性檢查任務的重要屬性。默認時,凡是應用瞭@Autowired註解的屬性和方法都必須找到合適的協作者,否則DI容器會拋出異常,通過調整required屬性取值能夠改變這一行為@Autowired註解能夠作用於構建器、屬性、方法。這裡的方法不局限於設值方法,即setter方法,常見的各種方法都可以應用這一註解。
 
Java代碼 
@Autowired(required=false)    //required表示不對檢查 
private TestBean2 testBean2;     
@Autowired    
private TestBean3 testBean3;   
 @Autowired註解的required屬性設置為false時,即使未找到合適的協作者,異常都始終不會被拋出。
2:spring mvc註解
 
Java代碼 
@Controller//表現層註解生成對象 
public class RestController { 
 public RestController(){ 
         
    } 
    //映射註解路徑為/login 其中{user}表示參數,方式為get 
    @RequestMapping(value = "/login/{user}", method = RequestMethod.GET)    
    public ModelAndView myMethod(HttpServletRequest request, HttpServletResponse response,      
            @PathVariable("user") String user, ModelMap modelMap) throws Exception {   
        modelMap.put("loginuser", user); 
        return new ModelAndView("/login", modelMap); 
    }    
     
     @RequestMapping(value = "/welcome", method = RequestMethod.GET)   
        public String registPost() {   
         return "/welcome"; 
        }   

   @PathVariable("user") String user是url中變量的獲取
區別::
 
Java代碼 
@RequestMapping(value="/handle1") 
public String handle1(@RequestParam("userName") String userName, 
              @RequestParam("password") String password, 
              @RequestParam("realName") String realName){ 
    … 

 @RequestParam("userName")表示獲取表單等參數和getparamter一樣:
 
表單數據自動轉換對象的參數
 
    所謂命令/表單對象並不需要實現任何接口,僅是一個擁有若幹屬性的POJO。Spring MVC按:“HTTP請求參數名 =  命令/表單對象的屬性名”
    的規則,自動綁定請求數據,支持“級聯屬性名”,自動進行基本類型數據轉換
 
Java代碼 
@RequestMapping(value = "/login") 
public String handle14(User user) { 
    … 

 表單和User類之間的關系:輸入的
 
Java代碼 
userName=xxx&password=yyy 
—————-》 
class User{ 
    private String userName; 
    private String password; 
}  
 

發佈留言