spring學習(轉載)
spring學習筆記
一、Spring中兩個十分重要的概念——IOC/DI & AOP
1.IOC/DI(Inverse of control/Dependence Injection)
IOC:控制反轉,看起來比較牛B,說起來十分簡單。就是不使用傳統的將類的依賴關係用硬編碼來維護的方式,而是讓容器來管理類之間的依賴,依賴關係在全在一個配置檔案上。這樣,就將造成耦合的根源——複雜的依賴關係,進行了統一的,集約式管理。
DI:依賴注入,其實就是控制反轉。只是比IOC的表達稍微好點,更能望文生意些。依賴注入,簡單地說,就是在執行期間,由容器將元件之間的依賴關係注入到元件中。
IOC/DI的作用:有了這樣的設計,我們只需要專心編寫一個個高內聚的零件,而不用關心這些零件如何組合起來工作。這個問題是由依賴關係的配置檔案需要關注的。這樣將元件和依賴分離,提高了元件的可重用性。
三種IOC/DI方式:
1.介面注入:
將實現類的物件賦給介面的引用。實現類的物件是透過配置檔案描述,由容器負責建立的。
注意:目前部門使用的BS,就是這種方式。
2.值注入:
透過setxxx方法,將依賴關係注入到某個具體的物件中。Spring使用最多的依賴注入方式就是值注入。
3.構造子注入:
容器呼叫實現類的購造器,將依賴作為構造器的引數注入,一次性構建一個穩定的物件。
後兩種依賴注入方式的比較:
1.值注入:自然,直接,簡潔,但不穩定(如果在set的時候發生併發訪問,可能會出現很嚴重的狀況)
2.構造子注入:複雜,但很穩定(一次性建立,在建立階段就將依賴注入了,建立完成後,就已經是一個完成的,穩定的物件),而且可以很好地控制依賴注入的順序關係。
2.AOP(Aspect Oriented Programming)
AOP:翻譯為面向方法程式設計,網上說比較確切的說法是面向切面程式設計。我個人認為,說成是面向動作程式設計好象更加貼切。因為AOP是將某類動作高度內聚的程式設計方法。
AOP的特點:1.切分動作 2.原始碼無關性
AOP在Spring中的應用:事務管理機制
Spring事務管理機制的基本原理:
1.用一個動態Proxy類載入所有的配有事物管理的Bean
2.根據配置的事務觸發點做if判斷,然後在方法的前後加上事務處理的程式碼
Spring中的兩種AOP方式:
1.Proxy:面向介面
2.CGLIB:面向Class
對於AOP在Spring中的應用還不是十分清楚,需要加強。
二、struts+spring+hibernate 整合
1.在Eclipse中建立專案
2.加入struts
3.加入spring
4.加入hibernate
5.整合struts&spring
1)透過plug-in將struts與spring對接
2)透過action的type屬性將Action的控制權轉給spring
3)spring中配置action的實現類
6.整和spring+hibernate
1)只需要配置spring中的sessionFactory就可以了。十分方便。
2)為資料庫訪問類配置spring的事務管理,使得持久層的操作可以在spring的控制範圍之內。
(注意:以上內容比較簡單,純屬記錄個人學習過程。而且由於剛剛接觸spring,水平有限。不足之處,請多多原諒)
附:登入模組示例
配置檔案部分
Struts配置:struts-config.xml
name="loginForm"
scope="request"
parameter="method">
Spring配置:applicationContext.xml
singleton="false">
Hibernate配置:hibernate.cfg.xml:略,沒什麼好看的,就是配了個資料來源
程式碼部分:
Action:
package com.neusoft.apps.login.rp;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import com.neusoft.apps.login.LoginBS;
public class LoginAction extends DispatchAction{
private LoginBS dao;
public ActionForward login(ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
LoginForm form = (LoginForm) actionForm;
if(dao.isValidUser(form.getAae011(),form.getAae012()))
return actionMapping.findForward("ok");
else
return actionMapping.findForward("failed");
}
public LoginBS getDao() {
return dao;
}
public void setDao(LoginBS dao) {
this.dao = dao;
}
}
DAOImp:
package com.neusoft.apps.login.bp;
import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.neusoft.apps.login.LoginBS;
public class LoginBSImp extends HibernateDaoSupport implements LoginBS{
private SessionFactory sessionFactory;
private String hql;
public boolean isValidUser(String username, String password) {
// TODO Auto-generated method stub
List userList = this.getHibernateTemplate().find(hql, new Object[]{username,password});
if(userList.size() > 0)
return true;
else
return false;
}
public String getHql() {
return hql;
}
public void setHql(String hql) {
this.hql = hql;
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9294812/viewspace-930029/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spring Boot 學習資料 (轉載)Spring Boot
- Web【轉載學習】Web
- Mqtt 學習文件【轉載】MQQT
- Spring學習之——Bean載入流程SpringBean
- ctf學習筆記[轉載]筆記
- 質量管理學習(轉載)
- 行動學習法(轉載)
- jenkins學習轉載文字Jenkins
- [轉載] 快速學習-Mybatis框架概述MyBatis框架
- 轉載 hessian學習總結
- 學習 Shell Scripts(轉載鳥哥)
- 【轉載】職場人士日常學習方法
- 科爾伯的學習模型(轉載)模型
- 瑞定的學習模型(轉載)模型
- 理解spring (轉載)Spring
- 【轉載】IEEE754 學習總結
- 轉:Docker學習---掛載本地目錄Docker
- C語言學習資料(轉載)C語言
- (轉載)ORACLE MODEL子句學習筆記Oracle筆記
- Spring學習Spring
- 轉載---職場向狼學習十條處世哲學
- spring boot學習Spring Boot
- Spring Cloud學習SpringCloud
- Spring Boot 學習Spring Boot
- Spring學習03Spring
- Spring Security學習Spring
- Spring MVC學習SpringMVC
- Spring學習總結(24)——Spring配置檔案載入路徑總結Spring
- Spring Boot學習3:web篇(中)-Spring boot Rest學習Spring BootWebREST
- 學習NetBSD-掛載MSDOS分割槽(轉)
- 企業學習環境塑造法(轉載)
- 【轉載】Spring Cache介紹Spring
- 【轉載】spring框架介紹Spring框架
- Spring---IoC(控制反轉)原理學習筆記【全】Spring筆記
- spring學習:spring原始碼_BeanDefinitionSpring原始碼Bean
- 【spring原始碼學習】spring的IOC容器之BeanFactoryPostProcessor介面學習Spring原始碼Bean
- 【spring原始碼學習】Spring的IOC容器之BeanPostProcessor介面學習Spring原始碼Bean
- spring學習筆記Spring筆記