隨筆中默認的包為com.demo
默認接口:Demo
實現(xiàn)類:Demo1,Demo2
使用spring注解第一步,需要在applicationContext*.xml中配置對應的包下的注解掃描陨溅,配置如下:
<context:component-scan base-package=”com.demo”/>
配置之后spring會自動掃描配置包下類中的注解,悬荣,多個包的時候需要以,分割
1、@Autowired,即自動裝配,默認按類型匹配,spring會在容器中查找匹配的bean吕粹,當且僅有一個匹配的Bean時,將其注入到注解對應的變量中岗仑,匹配不到會報錯匹耕。
@Autowired
private Demo demo;
2、@Qualifier荠雕,指定需要注入的Bean的名稱稳其,適用于當一個接口A有兩個不同的實現(xiàn)類A1,A2的情況炸卑,這時候直接使用@Autowired既鞠,spring在容器中默認根據(jù)類型匹配會獲取到兩個實現(xiàn)類,會異常報錯盖文,這時候就需要通過指定Bean名稱的方式來注入正確的Bean了嘱蛋。使用方式如下:
@Autowired
@Qualifier("demo2")
private Demo demo;
3、@Resource五续,這個J2EE的注解洒敏,并不是spring的注解,也實現(xiàn)了@Autowired的功能疙驾,當@Resource后面無任何內(nèi)容時凶伙,默認通過name去匹配bean,找不到再去按type去匹配它碎,可以顯式的指定name或者type函荣,匹配不到會報錯,使用方式如下
@Resource
@Resource(name="demo1")
@Resource(type=Demo.class)
4扳肛、@Compoent傻挂,對原有的XML配置Bean的簡化,一種通用的注解敞峭,用于申明這是一個Bean,不建議使用
5蝉仇、@Controller旋讹,對原有的XML配置Bean的簡化殖蚕,對應的是表現(xiàn)層的Bean,負責DispatcherServlet分發(fā)的請求沉迹,即控制器Controller睦疫,當然完整的控制器仍需要@RequestMapping 和@RequestParam等一些注解來定時URL和Controller方法之間的映射
@Controller
@RequestMapping(value = "/test")
public class ControllerDemo {
@RequestMapping(value = "/demoMethod",method =RequestMethod.POST)
public String demoMethod(){
return "";
}
}
對于/test/demoMehtod的post請求,demoMethod會被執(zhí)行鞭呕。
6蛤育、@Service,對原有的XML配置Bean的簡化葫松,一般配置于業(yè)務層瓦糕,對應的類在容器中的id為demo1,即類名且首字母小寫腋么,當然也可以單獨對id進行賦值
@Service
public class Demo1{
}
@Service("Demo1")
public class Demo1{
}
7咕娄、@Repository,用于注解Dao層
8@RequrestMapping 將web請求映射到MVC和REST 控制器上珊擂,此注解屬性和用于較多還有與一些注解搭配的使用方法圣勒,這里只是簡單記錄一下
簡單介紹一些本身的屬性
(1)value:用來對URL進行限制
(2)method:申明不同的HTTP請求的方法類型
(3)params:可以對URL傳入的參數(shù)進行限制
(4)produces、consumes:produce可以修改相應的格式摧扇,consumes對特定格式的內(nèi)容進行處理
(5)headers:配置具體的header屬性圣贸,進行映射限制
例子:
@Controller
@RequestMapping(value = "/test")
public class ControllerDemo {
@RequestMapping(value = "/demoMethod",
method =RequestMethod.POST,
params = {"id=10"},
produces = "application/JSON" ,
headers = "content-type=text/plain"
)
public String demoPostMethod(){
return "";
}
}
上面的示例中會對/test/demoMethod?id=10,header中content-type屬性為text/plain的HTTP POST請求返回一個JSON響應。
關于RequrestMapping的詳細使用可以參考:http://www.iteye.com/news/32657