SSM框架常用註解分享
SSM框架常用註解分享
1、@Controller [漢譯英 :管理者]
只是定義了一個控制器類,而使用@RequestMapping 註解的方法才是真正處理請求的處理器 @Controller 的使用方法
(1)在SpringMVC 的配置檔案中定義MyController 的bean 物件。
<bean class="com.host.app.web.controller.MyController"/>
(2)在SpringMVC 的配置檔案中告訴Spring 該到哪裡去找標記為@Controller 的Controller 控制器。
< context:component-scan base-package = "com.host.app.web" />
//路徑寫到controller的上一層(掃描包詳解見下面淺析)
spring-mvc.xml的配置
<!-- 使用Annotation自動註冊Bean,只掃描@Controller -->
<context:component-scan
base-package="com.thinkgem.jeesite" use-default-filters="false">
<!-- base-package 如果多個,用“,”分隔 -->
<context:include-filter type="annotation" expression
</context:component-scan>
2、@RequestMapping [漢譯英 :請求對映]
作用:處理請求對映,用於類或方法上,
用於類時,表示類中的所有響應請求的方法都是以該地址作為父路徑。
6個屬性:
1、 value, method;
value: 指定請求的實際地址,指定的地址可以是URI Template 模式(後面將會說明);
method: 指定請求的method型別, GET、POST、PUT、DELETE等;
2、consumes,produces
consumes: 指定處理請求的提交內容型別(Content-Type),例如application/json, text/html;
produces: 指定返回的內容型別,僅當request請求頭中的(Accept)型別中包含該指定型別才返回;
3、params,headers
params: 指定request中必須包含某些引數值是,才讓該方法處理。
headers: 指定request中必須包含某些指定的header值,才能讓該方法處理請求。
例如:
@Controller
@RequestMapping(value = "${adminPath}/sys/log")
public class LogController extends BaseController {
@Autowired
private LogService logService;
...
3、@Resource和@Autowired [漢譯英 :@資源和@自動裝配]
都是做bean的注入時使用
@Resource並不是Spring的註解,它的包是javax.annotation.Resource,需要匯入,但是Spring支援該註解的注入。
1、共同點
兩者都可以寫在欄位和setter方法上。兩者如果都寫在欄位上,那麼就不需要再寫setter方法。
2、不同點
@Autowired 只按照型別注入
@Resource 預設按照名稱注入
@Autowired 的目的:
使用Spring時,通過Spring注入的Bean一般都被定義成private,並且要有getter和setter方法,顯得比較繁瑣,增加了程式碼量,使用@Autowired可以減少程式碼量。
標註可以放在成員變數上,也可以放在成員變數的set方法上。前者,Spring會直接將UserDao型別的唯一一個bean賦值給userDao這個成員變數;後者,Spring會呼叫setUserDao方法來將UserDao型別的唯一一個bean裝配到userDao這個屬性。
例如:
public class TestServiceImpl {
// 下面兩種@Autowired只要使用一種即可
@Autowired
private UserDao userDao; // 用於欄位上
@Autowired
public void setUserDao(UserDao userDao) { // 用於屬性的方法上
this.userDao = userDao;
}
}
4、@PathVariable [漢譯英 :@路徑可變]
用處:將請求URL中的模板變數對映到功能處理方法的引數上,即取出uri模板中的變數作為引數
例子:
@RequestMapping(value = "treeList/{typeAlias}.xml")
@ResponseBody
public TreeList treeList(@PathVariable("typeAlias") String typeAlias) {
// 如果使用Cache,並且在Cache裡存在,則直接返回。
boolean useCache = Global.getConfig("supcan.useCache") == "true";
if (useCache){
Object object = CacheUtils.get(SUPCAN_CACHE, typeAlias);
if (object != null){
return (TreeList)object;
}
}
...
5、@requestParam [漢譯英 :@引數要求]
@requestParam主要用於在SpringMVC後臺控制層獲取引數,
類似一種是request.getParameter("name"),
它有三個常用引數:defaultValue = "0", //defaultValue 表示設定預設值。
required = false, //required 通過boolean設定是否是必須要傳入的引數。
value = "isApp"; //value 值表示接受的傳入的引數型別。
例如:
@ModelAttribute
public CbrcLogData get(@RequestParam(required = false) String id) {
CbrcLogData entity = null;
if (StringUtils.isNotBlank(id)) {
entity = cbrcLogDataService.get(id);
}
return entity;
}
6、@ResponseBody [漢譯英 :@主體結果]
作用: 該註解用於將Controller的方法返回的物件,通過適當的HttpMessageConverter轉換為指定格式後,
入到Response物件的body資料區。
使用時機:返回的資料不是html標籤的頁面,而是其他某種格式的資料時(如json、xml等)使用;
【詳解】
HttpMessageConverter 訊息轉換器 和 @ResponseBody聯合使用
@responsebody表示該方法的返回結果直接寫入HTTP response body中
一般在非同步獲取資料時使用,在使用@RequestMapping後,返回值通常解析為跳轉路徑,加上@responsebody後返回結果不會被解析為跳轉路徑,而是直接寫入HTTP response body中。比如非同步獲取json資料,加上@responsebody後,會直接返回json資料。
Spring3 MVC的@ResponseBody 的作用是把返回值直接寫到HTTP response body裡。
HttpMessageConverter類封裝在spring-web-*.RELEASE.jar包中
例如:
@RequestMapping(value = "treeList/{typeAlias}.xml")
@ResponseBody
public TreeList treeList(@PathVariable("typeAlias") String typeAlias) {
// 如果使用Cache,並且在Cache裡存在,則直接返回。
boolean useCache = Global.getConfig("supcan.useCache") == "true";
...
7、Repository [漢譯英 :@倉庫]
作用:應用在導層,在daoImpl類上面註解。
例如:
@Repository
public class ActMyBusinessDao extends BaseHibernateDao<ActMyBusiness,String>{
public Class getEntityClass() {
return ActMyBusiness.class;
}
...
8、@ModelAttribute和 @SessionAttributes
(1)@ModelAttribute的作用
該Controller的所有方法在呼叫前,先執行此@ModelAttribute方法
(2)@SessionAttributes的作用
使屬性進行跨屬性訪問
例如:
|
9、@Service
宣告Service元件
10、@RequestParam
返回叄數@RequestParam(value = "fileUpload", required = false)
11、@RequiresPermissions許可權註解
@RequiresPermissions("yzy:eaparam:eaparam:edit")
12、@Param()
叄數與對應xml裡的#{}裡的內容一致
-----------------------------------------------------------------------
13、@postmapping
是一個組合註解,是@RequestMapping(method = RequestMethod.POST)的縮寫。
---------------------------------------------------------------------------------
14、@GetMapping()
是一個組合註解,是@RequestMapping(method = RequestMethod.GET)的縮寫。
------------------------------------------------------------------------
15、@Transactional
在service層載入事務,目的在於關於操作資料庫的操作由事務來管理