Spring mvc+struts2+Hibernate整合例項程式碼(註解詳解)
原文:Spring mvc+struts2+Hibernate整合例項程式碼(註解詳解)
一:使用場景:
(1)由於專案的需要為了提高開發的效率程式碼簡潔,因此專案中部分使用註解來代替xml
(2)專案中使用註解的部分主要是spring依賴注入的那部分使用註解,其它的還是採用xml
(3)註解標籤的分類和使用:
二:要點分析:
2.1元件注入:
@Service用於標註業務層元件(指的是service層)、
@Controller用於標註控制層元件(如struts中的action)、
@Repository用於標註資料訪問元件(指得是資料操作層),即DAO元件。
@Component泛指元件,當元件不好歸類的時候,我們可以使用這個註解進行標註。(也就是說它可以代替@Service, @Controller, @Repository但是這樣的話就不很難辨清各個層的含義)
2.2元件的屬性注入:
@Autowired 是按照型別注入即byType
@Resource是按照名稱注入即byName
三:案例說明:
<<<<元件注入:
3.1 ProductsDao為持久層介面
@Repository
public class ProductsDaoImpl implements ProductsDao {
……
}
等價於:
@Repository("productsDaoImpl ")
public class ProductsDaoImpl implements ProductsDao {
……
}
注意:@Repository標籤通常是放在資料庫介面DAO的實現類上面,用於標註這個實現類是一個資料庫操作層,它注入到Spring容器的時候這個bean的名字或者是id就是這個類的全名首字母小寫,就像上面的例子@Repository和@Repository("productsDaoImpl ")但是一般開發建議使用預設的即@Repository這樣可以避免一些不必要的錯誤
3.2 ProductsService為業務層介面
@Service
public class ProductsService Impl implements ProductsService{
……
}
等價於:
@Service("productsServiceImpl ")
public class ProductsService Impl implements ProductsService{
……
}
注意:@Service標籤通常是放在業務層介面Service的實現類上面,用於標註這個實現類是一個業務層即service層,它注入到Spring容器的時候這個bean的名字或者是id就是這個類的全名首字母小寫,就像上面的例子@Service和@Service("productsServiceImpl ")但是一般開發建議使用預設的即@Service這樣可以避免一些不必要的錯誤
3.3 ProductsAction為業務層介面
@Controller
public class ProductsAction extends ActionSupport{
……
}
等價於:
@ Controller ("productsAction ")
public class ProductsAction extends ActionSupport{
……
}
注意:@Controller標籤通常是放在控制器層上面,用於標註類是一個控制器即action層,它注入到Spring容器的時候這個bean的名字或者是id就是這個類的全名首字母小寫,就像上面的例子@Controller和@Controller("productsAction")但是一般開發建議使用預設的即@Controller這樣可以避免一些不必要的錯誤
3.4ProductsAdvice就是一個普通的類實現了一個通知的介面
@Component
public class ProductsAdvice implements MethodBeforeAdvice {
public RecordAdvice (){}
// 呼叫之前的通知方法
public void before(Method method, Object[] args, Object target)
throws Throwable {
// 得到目標類
HunterMan hunter = (HunterMan)target;
// 得到目標類的logger
Logger logger = Logger.getLogger(target.getClass());
// 列印日誌
logger.info(hunter.getName()+" did "+method.getName());
}
}
注意:@Component的作用泛指所有的元件範圍廣,可以代表資料庫操作層DAO,可以代表業務層即service,可以代表控制器層action,也可以代表的普通的類,區別在於他們都是注入,最後注入到spring容器中,只不過你使用@Service注入的時候spring就知道你這個類是一個業務層的注入,你使用@Repository注入的時候spring知道你這個類是一個資料庫操作層,你使用@Controller注入的時候spring知道你這個類是一個控制器,你使用@Component注入的時候他可以理解為只是一個普通的類,因為別的程式使用的時候或者執行的時候需要這個物件所以就將這個物件注入進去了本身這個物件注入的時候沒有任何的含義。只是別的程式需要該物件的例項而已。
<<<<元件的屬性注入:
3.2 ProductsService為業務層介面
@Service
public class ProductsService Impl implements ProductsService{
@Autowired
private ProductDao ProductDaoImpl; // 按型別即byType自動注入
}
等價於
@Service
public class ProductsService Impl implements ProductsService{
@Resource
private ProductDao ProductDaoImpl; // 按型別即byName自動注入(ProductDaoImpl這個名稱必須和ProductDao 實現類 注入到spring容器的bean的id是一樣的)
}
注意: 業務層的實現 需要資料庫操作層DAO的支援即上面。ProductsService Impl業務層實現需要資料庫層DAO即ProductDao 的支援,我們不單單將ProductsServiceImpl注入到spring容器還要把他所需要的物件也注入到Spring容器中,但需要記住他所需要的物件事先是已經注入到spring容器中的,不然的話ProductsServiceImpl物件執行就會報錯,因為ProductsServiceImpl他所需要的物件你沒有提供給它。
由最程式碼官方編輯於2014-5-27 20:22:28
相關文章
- Spring中用註解建立bean例項SpringBean
- 【Spring Boot架構】整合Mybatis-Plus的例項詳解Spring Boot架構MyBatis
- Spring 註解學習 詳細程式碼示例Spring
- Spring註解詳解Spring
- Spring事務管理(詳解+例項)Spring
- jquery星級評分程式碼例項詳解jQuery
- SpringBoot+Dubbo的註解方式整合例項Spring Boot
- MySQL 序列 AUTO_INCREMENT詳解及例項程式碼MySqlREM
- javascript元素滑鼠跟隨效果程式碼例項詳解JavaScript
- hover事件延遲處理程式碼例項詳解事件
- Spring IoC 公共註解詳解Spring
- curl例項詳解
- sudo 詳解+例項
- Spring系列之新註解配置+Spring整合junit+註解注入Spring
- 例項程式碼詳解正規表示式匹配換行
- tcl/tk例項詳解——glob使用例解
- Python訪問小程式簡單方法程式碼例項詳解Python
- Spring+EhCache快取例項(詳細講解+原始碼下載)Spring快取原始碼
- 元件例項 $el 詳解元件
- Crontab例項-命令詳解
- CSS3繪製太極圖程式碼例項詳解CSSS3
- LINUX Shell指令碼程式設計例項詳解(一)上Linux指令碼程式設計
- CSS3 Flex 彈性佈局例項程式碼詳解CSSS3Flex
- js點選返回網頁頂部程式碼例項詳解JS網頁
- SpringBoot註解最全詳解(整合超詳細版本)Spring Boot
- 基於註解的 Spring MVC詳解SpringMVC
- Spring 註解程式設計之模式註解Spring程式設計模式
- 詳解Dart中如何透過註解生成程式碼Dart
- 詳解Dart中如何通過註解生成程式碼Dart
- shiro 整合 spring 實戰及原始碼詳解Spring原始碼
- 並查集例項詳解並查集
- Oracle 例項恢復詳解Oracle
- HBase(0.96以上版本)過濾器Filter詳解及例項程式碼過濾器Filter
- Python程式和執行緒例項詳解Python執行緒
- 詳解Spring MVC 4常用的那些註解SpringMVC
- Base64編碼與解碼程式碼例項
- jQuery tab選項卡程式碼詳解jQuery
- js解八皇后問題程式碼例項JS