锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲AV无码乱码麻豆精品国产,亚洲第一成年男人的天堂,亚洲国产精品无码中文lvhttp://m.tkk7.com/produ/category/54581.html1GBzh-cnMon, 10 Nov 2014 16:17:33 GMTMon, 10 Nov 2014 16:17:33 GMT60娓╂晠鐭ユ柊:spring_10鏁村悎Strutshttp://m.tkk7.com/produ/articles/419814.html閮借緝鐦?/dc:creator>閮借緝鐦?/author>Sun, 09 Nov 2014 01:38:00 GMThttp://m.tkk7.com/produ/articles/419814.htmlhttp://m.tkk7.com/produ/comments/419814.htmlhttp://m.tkk7.com/produ/articles/419814.html#Feedback0http://m.tkk7.com/produ/comments/commentRss/419814.htmlhttp://m.tkk7.com/produ/services/trackbacks/419814.html
 1         <dependency>
 2             <groupId>org.apache.struts</groupId>
 3             <artifactId>struts2-spring-plugin</artifactId>
 4             <version>2.3.7</version>
 5         </dependency>
 6         
 7         <dependency>
 8             <groupId>org.apache.struts</groupId>
 9             <artifactId>struts2-core</artifactId>
10             <version>2.3.7</version>
11         </dependency>
闄や簡鍦ㄦ祴璇曠被涓兘鍙栧緱宸ュ巶錛岄氳繃BeanId鍦ㄥ伐鍘備腑鑾峰彇瀹炰緥鐨勬儏鍐碉紝鍏朵粬鏃跺欎竴鑸槸閫氳繃鑷姩鎵弿騫舵敞鍏ワ紝鍥犳錛屽湪web.xml涓紝闄や簡struts鐨勮繃婊ゅ櫒錛岃繕闇瑕侀澶栨坊鍔爏pring涓婁笅鏂囩殑鐩戝惉鍣紝鍦ㄩ」鐩儴緗茬殑鏃跺欏氨灝哸ction娣誨姞鍒板伐鍘?br />
1     <listener>
2         <listener-class>
3             org.springframework.web.context.ContextLoaderListener
4         </listener-class>
5     </listener>
6     <context-param>
7         <param-name>contextConfigLocation</param-name>
8         <param-value>classpath*:beans.xml</param-value>
9     </context-param>
鍥犱負闇瑕乤ction琚玸pring榪涜綆$悊錛岃繕闇瑕佸湪struts.xml閰嶇疆涓緗互涓嬪唴瀹?/div>
1     <constant name="struts.objectFactory"
2         value="org.apache.struts2.spring.StrutsSpringObjectFactory" />
3     <constant name="struts.devMode" value="true" />
4     
5     <package name="user" extends="struts-default" namespace="/">
6         <action name="*" class="userAction" method="{1}">
7             <result name="success">/user{1}.jsp</result>
8         </action>
9     </package>
閫氳繃spring榪涜綆$悊涔嬪悗錛宎ction鐨刢lass閰嶇疆灝辨棤闇鍐嶅啓璇︾粏鐨勭被鐩綍錛岀洿鎺ュ啓浣滄敞鍏ョ被鐨凚eanId
 1 package org.duyt.action;
 2 
 3 import java.util.List;
 4 
 5 import javax.annotation.Resource;
 6 
 7 import org.duyt.domain.User;
 8 import org.duyt.service.IuserService;
 9 import org.springframework.context.annotation.Scope;
10 import org.springframework.stereotype.Controller;
11 
12 import com.opensymphony.xwork2.ActionSupport;
13 import com.opensymphony.xwork2.ModelDriven;
14 
15 @Controller("userAction")
16 //瀵逛簬action錛岄渶瑕侀澶栨寚瀹歋cope涓簆rototype錛岄粯璁ゆ槸鍗曚緥妯″紡
17 @Scope("prototype")
18 public class UserAction extends ActionSupport implements ModelDriven<User>{
19 
20     private static final long serialVersionUID = 2698940294947436354L;
21     
22     private User user;
23     private List<User> userList;
24     
25     @Resource
26     private IuserService userService;
27     
28     
29     public String list() {
30         
31         userList = userService.listUser();
32         
33         return SUCCESS;
34     }
35     
36     public User getModel() {
37         if (user == null) {
38             user = new User();
39         }
40         return user;
41     }
42 
43     //get/set鏂規硶鐣?br />44 
45 }
46 

涓婅堪閰嶇疆涔嬪悗錛屽氨瀹屾垚浜嗗struts鐨勬暣鍚堬紝浣嗘槸鏁村悎涔嬪悗錛屽彲鑳戒細閬囧埌浠ヤ笅鐨勯棶棰橈細
1錛氬叧浜庡0鏄庡紡浜嬪姟鐨勫垏鍏ョ偣琛ㄨ揪寮忋傝櫧鐒舵墽琛屽鏁版嵁搴撴搷浣滅殑鐜妭鏄疍ao錛屼絾鏄0鏄庡嵈涓嶈兘鍦―ao榪涜浜嬪姟澶勭悊錛屾瘯绔熶竴涓狣ao瀵規暟鎹簱鐨勬搷浣滀笉涓瀹氳兘浠h〃涓涓畬鏁寸殑浜嬪姟銆傛墍浠ワ紝鍒囧叆鐐瑰簲璇ヨ緗湪service鎺ュ彛涓婏紝涓涓叿浣撶殑涓氬姟澶勭悊搴旇鍖呭惈涓涓畬鏁寸殑浜嬪姟銆傛嬁鏈緇忓吀鐨勯摱琛岃漿璐︾殑渚嬪瓙鏉ヨ錛屼竴涓處鎴風殑閲戦杞嚭鎿嶄綔鍜屽彟涓涓處鎴風殑杞叆鎿嶄綔搴旇璁懼畾鍦ㄤ竴涓猻ervice鐨勬柟娉曢噷錛屽綋浜嬪姟瀵硅繖涓柟娉曠敓鏁堬紝閭d箞涓嶈杞叆鎴栬呰漿鍑轟換浣曚竴涓搷浣滃嚭鐜板紓甯革紝閭d箞鏁翠釜鎿嶄綔閮戒細鍥炴粴銆傚樿嫢浜嬪姟璁懼畾鍦―ao涓婏紝閭d箞杞叆鍜岃漿鍑哄垎鍒負涓や釜鏂規硶錛屽叾涓竴涓嚭鐜板紓甯鎬箣鍚庯紙涓鑸篃灝辨槸杞嚭鍑虹幇寮傚父錛夛紝浼氬嚭鐜版墦閽辨敹涓嶅埌錛岄挶閮戒笉鐭ラ亾鍘誨摢鍎夸簡鐨勬儏鍐碉紝榪欐槸鎴戜滑鏈涓嶆兂鐪嬪埌鐨勩傚彲鑳戒綘浼氳錛屾妸杞叆鍜岃漿鍑鴻瀹氬湪Dao鐨勪竴涓柟娉曚腑涓嶅氨鍙互浜嗭紝瀵癸紝榪欐牱鐨勮瘽鏄彲浠ヨВ鍐抽棶棰橈紝浣嗘槸榪欐牱浼氬鑷村眰鍜屽眰涔嬮棿鐨勫垎宸ヤ笉鏄庣‘錛岀浉浜掓笚閫忕殑鎯呭喌錛孌ao鍙槸瀵規暟鎹簱鐨勮闂紝浠栦笉搴旇娑夊強榪囧垎鐨勪笟鍔¢昏緫錛屽氨鍍忔帶鍒跺眰搴旇鎶婃洿澶氱殑綺懼姏鏀懼湪璺寵漿鎴栬呭弬鏁頒紶閫掍笂錛岃屼笉搴旇鍜屼笓闂ㄦ帶鍒朵笟鍔″鐞嗙殑service灞傛姠媧誨共銆傝繕鏈夊氨鏄湪Dao涓涓柟娉曢噷榪涜涓氬姟閫昏緫鎿嶄綔鍙兘浼氭秹鍙奃ao涔嬮棿鐨勫祵濂楄皟鐢紝浼氬嚭鐜伴棶棰樸?br />2錛氬湪欏甸潰涓婁嬌鐢ㄦ煡璇㈡椂銆傚彲鑳戒細鍑虹幇浠ヤ笅鐨勫紓甯?br />
1     org.hibernate.LazyInitializationException: could not initialize proxy - no Session
2     at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:132)
3     at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:174)
4     at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
5     at org.duyt.domain.Address_$$_javassist_0.toString(Address_$$_javassist_0.java)
6     ...
榪欐槸鐢變簬hibernate鐨勬噿鍔犺澆鏈哄埗寮曡搗鐨勶紝鐢變簬澹版槑寮忎簨鍔″皢浜嬪姟璁懼畾鍦╯ervice鐨勬帴鍙o紝瀵艱嚧service鏂規硶鎵ц瀹屾瘯灝變細鍏抽棴session錛岄偅涔堝埌浜嗛〉闈笂闇瑕佸彇寰楁噿鍔犺澆鎵嶈兘鍙栧緱鐨勪俊鎭椂錛屼細瀵艱嚧鍑虹幇娌℃湁session鐨勭姸鎬侊紝閭d箞濡備綍瑙e喅鍛€傚彲浠ラ氳繃涓涓繃婊ゅ櫒錛屼嬌鐢═hreadlocal鍦ㄨ姹備箣鍒濆氨寮鍚痵ession錛岃繖鏍鳳紝鏁翠釜嫻佺▼閮藉彲浠ュ彇寰梥ession錛岃姹傜粨鏉熶箣鏃跺啀鍏抽棴session銆傛柊澧炰竴涓繃婊ゅ櫒錛屽皢spring宸ュ巶涓殑sessionfactory鍙栧緱錛岄氳繃璇ュ伐鍘傛柊寤簊ession
 1 package org.duyt.filter;
 2 
 3 import java.io.IOException;
 4 
 5 import javax.servlet.Filter;
 6 import javax.servlet.FilterChain;
 7 import javax.servlet.FilterConfig;
 8 import javax.servlet.ServletException;
 9 import javax.servlet.ServletRequest;
10 import javax.servlet.ServletResponse;
11 
12 import org.hibernate.Session;
13 import org.hibernate.SessionFactory;
14 import org.springframework.web.context.WebApplicationContext;
15 import org.springframework.web.context.support.WebApplicationContextUtils;
16 
17 public class OpenSessionInViewFilter implements Filter{
18     
19     //spring宸ュ巶
20     private static WebApplicationContext wac;
21     //hibernateSessionFactory
22     private static SessionFactory sessionFactory;
23     //綰跨▼闂村叡浜殑session
24     private static ThreadLocal<Session> sessionholder = new ThreadLocal<Session>();
25     
26     private static void setSession(Session session){
27         sessionholder.set(session);
28     }
29     
30     public static Session getSession(){
31         return sessionholder.get();
32     }
33     
34     private static void removeSession(){
35         sessionholder.remove();
36     }
37 
38     public void destroy() {
39         
40     }
41 
42     public void doFilter(ServletRequest req, ServletResponse resp,
43             FilterChain chain) throws IOException, ServletException {
44         try {
45             //鎵ц鎿嶄綔涔嬪墠鍏堣瀹歴ession
46             if (sessionFactory != null) {
47                 setSession(sessionFactory.openSession());
48             }
49             chain.doFilter(req, resp);
50         } finally{
51             //鎿嶄綔瀹屾瘯涔嬪悗鍦ㄧЩ闄ession
52             removeSession();
53         }
54     }
55 
56     public void init(FilterConfig cfg) throws ServletException {
57         //灝唖pring鐨勫伐鍘傚姞杞藉埌灞炴?br />58         //榪欓噷涓嶈浣跨敤new classpathXml.. 鍘繪柊寤哄伐鍘傦紝搴旇浣跨敤欏圭洰鍚姩鏃跺垱寤虹殑宸ュ巶
59         //濡備笅鑾峰彇
60         wac = WebApplicationContextUtils.getWebApplicationContext(cfg.getServletContext());
61         sessionFactory = (SessionFactory) wac.getBean("sessionFactory");
62     }
63 
64 }
65 
涔嬪悗錛屽湪Dao涓繘琛屾暟鎹簱鎿嶄綔鏃跺氨闇瑕佷嬌鐢ㄨ繃婊ゅ櫒鍒涘緩鐨剆ession
1      OpenSessionInViewFilter.getSession().XXX
spring鏈韓涔熸彁渚涗簡涓涓彨OpenSessionInViewFilter鐨勮繃婊ゅ櫒錛岃兘甯姪鎴戜滑瑙e喅鎳掑姞杞芥椂娌℃湁session鐨勯棶棰橈紝鐪嬩笅web.xml
 1     <!-- 瀹炵幇openSessionInView -->
 2     <!-- 娉ㄦ剰錛屾湰榪囨護鍣ㄨ鏀懼湪struts榪囨護鍣ㄧ殑鍓嶉潰錛屽惁鍒欎細澶辨晥 -->
 3     <filter>
 4         <filter-name>OpenSessionInViewFilter</filter-name>
 5         <!-- 榪欐槸鑷畾涔夌殑filter -->
 6         <!-- <filter-class>org.duyt.filter.OpenSessionInViewFilter</filter-class> -->
 7         
 8         <!-- 榪欐槸spring鎻愪緵鐨?nbsp;OpenSessionInViewFilter錛屼嬌鐢╯pring鑷甫鐨勫氨涓嶇敤鍐岲AO鐨勫疄鐜頒腑浣跨敤filter鑾峰彇session-->
 9         <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
10     </filter>
11     <filter-mapping>
12         <filter-name>OpenSessionInViewFilter</filter-name>
13         <url-pattern>/*</url-pattern>
14     </filter-mapping>


]]>娓╂晠鐭ユ柊:spring_09鏁村悎Hibernatehttp://m.tkk7.com/produ/articles/419805.html閮借緝鐦?/dc:creator>閮借緝鐦?/author>Sat, 08 Nov 2014 16:37:00 GMThttp://m.tkk7.com/produ/articles/419805.htmlhttp://m.tkk7.com/produ/comments/419805.htmlhttp://m.tkk7.com/produ/articles/419805.html#Feedback0http://m.tkk7.com/produ/comments/commentRss/419805.htmlhttp://m.tkk7.com/produ/services/trackbacks/419805.html闃呰鍏ㄦ枃

]]>
娓╂晠鐭ユ柊:spring_08鏁村悎JDBChttp://m.tkk7.com/produ/articles/419683.html閮借緝鐦?/dc:creator>閮借緝鐦?/author>Fri, 07 Nov 2014 13:44:00 GMThttp://m.tkk7.com/produ/articles/419683.htmlhttp://m.tkk7.com/produ/comments/419683.htmlhttp://m.tkk7.com/produ/articles/419683.html#Feedback0http://m.tkk7.com/produ/comments/commentRss/419683.htmlhttp://m.tkk7.com/produ/services/trackbacks/419683.html闃呰鍏ㄦ枃

]]>
娓╂晠鐭ユ柊:spring_07鍩轟簬XML閰嶇疆AOPhttp://m.tkk7.com/produ/articles/419555.html閮借緝鐦?/dc:creator>閮借緝鐦?/author>Wed, 05 Nov 2014 14:45:00 GMThttp://m.tkk7.com/produ/articles/419555.htmlhttp://m.tkk7.com/produ/comments/419555.htmlhttp://m.tkk7.com/produ/articles/419555.html#Feedback0http://m.tkk7.com/produ/comments/commentRss/419555.htmlhttp://m.tkk7.com/produ/services/trackbacks/419555.html
鍒囬潰綾伙紝鍘婚櫎鎺夊拰AOP鏈夊叧鐨勬敞瑙o紝鍙樺緱闈炲父綆媧?br />
 1 package org.duyt.autoProxy;
 2 
 3 import org.aspectj.lang.JoinPoint;
 4 import org.aspectj.lang.ProceedingJoinPoint;
 5 import org.duyt.util.Logger;
 6 import org.springframework.stereotype.Component;
 7 
 8 @Component("loggerAspect")
 9 public class LoggerAspect {
10     public void loggerBefore(JoinPoint jp) {
11         Logger.info("鍓嶇疆鍒囧叆鐐癸細execute==>" + jp.getTarget() + "==>"
12                 + jp.getSignature().getName() + " method");
13     }
14     public void loggerAfter(JoinPoint jp) {
15         Logger.info("鍚庣疆鍒囧叆鐐癸細execute==>" + jp.getTarget() + "==>"
16                 + jp.getSignature().getName() + " method");
17     }
18     public void loggerAround(ProceedingJoinPoint pjp) throws Throwable {
19         Logger.info("鐜粫寮濮嬪垏鍏ョ偣錛歟xecute==>" + pjp.getTarget() + "==>"
20                 + pjp.getSignature().getName() + " method");
21         pjp.proceed();
22         Logger.info("鐜粫緇撴潫鍒囧叆鐐癸細execute==>" + pjp.getTarget() + "==>"
23                 + pjp.getSignature().getName() + " method");
24     }
25 }
26 
beans.xml鍙樻洿涓轟互涓嬬殑閰嶇疆
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
 4     xmlns:aop="http://www.springframework.org/schema/aop"
 5     xsi:schemaLocation="http://www.springframework.org/schema/beans 
 6                         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 7                         http://www.springframework.org/schema/context
 8                         http://www.springframework.org/schema/context/spring-context-3.0.xsd
 9                         http://www.springframework.org/schema/aop
10                         http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
11 
12     <!-- 寮鍚敞瑙?nbsp;-->
13     <context:annotation-config />
14     <!-- 鎸囧畾鍝簺闇瑕佸姞鍏ユ壂鎻?nbsp;-->
15     <context:component-scan base-package="org.duyt.*" />
16 
17     <!-- 寮鍚疉OP鍒囬潰鑷姩浠g悊 -->
18     <!-- 鏃犻』鍐嶅紑鍚?nbsp;-->
19     <!-- <aop:aspectj-autoproxy /> -->
20 
21     <!-- 浣跨敤xml閰嶇疆AOP瀹炵幇 -->
22     <aop:config>
23         <!-- 瀹氫箟鍒囬潰綾誨茍寮曠敤 -->
24         <aop:aspect id="loggerAspect" ref="loggerAspect">
25             <!-- 瀹氫箟鍒囧叆鐐?nbsp;-->
26             <aop:pointcut id="loggerPointcut"
27                 expression="execution (* org.duyt.dao.*.add*(..))||
28                             execution (* org.duyt.dao.*.delete*(..))||
29                             execution (* org.duyt.dao.*.update*(..))" />
30             <!-- 瀹氫箟閫氱煡錛屽墠緗?nbsp;-->
31             <aop:before method="loggerBefore" pointcut-ref="loggerPointcut"/>
32             <!-- 鍚庣疆 -->
33             <aop:after method="loggerAfter" pointcut-ref="loggerPointcut"/>
34             <!-- 鐜粫 -->
35             <aop:around method="loggerAround" pointcut-ref="loggerPointcut"/>
36         </aop:aspect>
37     </aop:config>
38 
39 </beans>
嫻嬭瘯綾?br />
 1 package org.duyt.test;
 2 
 3 import org.duyt.action.UserAction;
 4 import org.junit.Test;
 5 import org.springframework.beans.factory.BeanFactory;
 6 import org.springframework.context.support.ClassPathXmlApplicationContext;
 7 
 8 public class IocTest {
 9 
10     private BeanFactory factory = new ClassPathXmlApplicationContext("beans.xml");
11     
12     @Test
13     public void test(){
14         //鍩轟簬XML鐨凙OP
15         UserAction ua = (UserAction) factory.getBean("userAction");
16         ua.addUser();
17     }
18     
19 }
20 
緇撴灉鍜屼嬌鐢╝nnotation鏃犲紓錛?br />
鍓嶇疆鍒囧叆鐐癸細execute==>org.duyt.dao.impl.UserDao@af08a49==>add method
鐜粫寮濮嬪垏鍏ョ偣錛歟xecute==>org.duyt.dao.impl.UserDao@af08a49==>add method
鐢ㄦ埛澧炲姞鏂規硶
鍚庣疆鍒囧叆鐐癸細execute==>org.duyt.dao.impl.UserDao@af08a49==>add method
鐜粫緇撴潫鍒囧叆鐐癸細execute==>org.duyt.dao.impl.UserDao@af08a49==>add method


]]>
娓╂晠鐭ユ柊:spring_06鍩轟簬annotation閰嶇疆AOPhttp://m.tkk7.com/produ/articles/419519.html閮借緝鐦?/dc:creator>閮借緝鐦?/author>Wed, 05 Nov 2014 03:09:00 GMThttp://m.tkk7.com/produ/articles/419519.htmlhttp://m.tkk7.com/produ/comments/419519.htmlhttp://m.tkk7.com/produ/articles/419519.html#Feedback0http://m.tkk7.com/produ/comments/commentRss/419519.htmlhttp://m.tkk7.com/produ/services/trackbacks/419519.html
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
 4     xmlns:aop="http://www.springframework.org/schema/aop"
 5     xsi:schemaLocation="http://www.springframework.org/schema/beans 
 6                         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 7                         http://www.springframework.org/schema/context
 8                         http://www.springframework.org/schema/context/spring-context-3.0.xsd
 9                         http://www.springframework.org/schema/aop
10                         http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
11 
12     <!-- 寮鍚敞瑙?nbsp;-->
13     <context:annotation-config />
14     <!-- 鎸囧畾鍝簺闇瑕佸姞鍏ユ壂鎻?nbsp;-->
15     <context:component-scan base-package="org.duyt.*" />
16     <!-- 寮鍚疉OP鍒囬潰鑷姩浠g悊 -->
17     <aop:aspectj-autoproxy />
18 
19 </beans>
姝ゆ椂錛岄渶瑕佸姞鍏op瀵瑰簲鐨勫懡鍚嶇┖闂達紝铏界劧鎼滅儲涓涓嬩細鏈変竴澶у爢錛屼絾鏄繖縐嶅懡鍚嶇┖闂寸殑澹版槑浼氬湪spring-XXX鐩稿簲鐨勫寘涓嬫壘鍒幫紝瑕佸姞鍏op鐨勫0鏄庯紝鍙湪spring-aop-X.X.X.jar鍖咃紝META-INF涓嬬殑spring.schemas錛宻pring.tooling閰嶇疆鏂囦歡涓壘鍒般?br />鍦ㄥ畾涔夊垏闈箣鍓嶏紝榪樻槸鍏堢悊娓呬竴浜涙蹇?br />1錛屽垏鍏ョ偣錛坧oint-cut錛夛紝鏍稿績鏄垏鍏ョ偣琛ㄨ揪寮忥紝鍙互紜畾璇鋒眰嫻佺▼涓殑鏌愪竴涓偣銆?br />2錛岄氱煡錛坅dvice錛夛紝鍙互鐞嗚В涓哄湪鍒囧叆鐐圭殑鏌愪釜浣嶇疆錛堝父瑙佸鍒囧叆鐐逛箣鍓嶏紝涔嬪悗錛屾垨鑰呯幆緇曠潃鍒囧叆鐐癸級娣誨姞闇瑕佹嫇灞曠殑鍔熻兘錛岄氱煡鍖呭惈鍒囧叆鐨勫叿浣撲綅緗拰鎷撳睍鐨勫唴瀹廣?br />3錛屽垏闈紙aspect錛夛紝涓綾誨垏鍏ョ偣錛堟瘮濡備笓闂ㄦ坊鍔犳棩蹇楃殑鍒囬潰錛屾垨鑰呬笓闂ㄨ褰曞紓甯哥殑鍒囬潰錛夊彲浠ョ悊瑙d負緇勬垚浜嗕竴涓垏闈紝鍒囬潰鍖呭惈浜嗗垏鍏ョ偣鍜屾墍闇瑕佺殑閫氱煡銆?br />涓嬮潰瀹氫箟涓涓垏闈細
 1 package org.duyt.autoProxy;
 2 
 3 import org.aspectj.lang.JoinPoint;
 4 import org.aspectj.lang.ProceedingJoinPoint;
 5 import org.aspectj.lang.annotation.After;
 6 import org.aspectj.lang.annotation.Around;
 7 import org.aspectj.lang.annotation.Aspect;
 8 import org.aspectj.lang.annotation.Before;
 9 import org.duyt.util.Logger;
10 import org.springframework.stereotype.Component;
11 
12 /**
13  * Spring浣跨敤浜嗙涓夋柟AspectJ鏉ュ疄鐜癆OP鍔熻兘錛孉OP鐩稿叧鐨勬敞瑙i渶瑕佹坊鍔燗spectJ鐨勯ギ鐢?br />14  * @author Administrator
15  *
16  */
17 //娉ㄦ槑榪欐槸涓涓垏闈㈢被
18 @Aspect
19 //娣誨姞spring鐨勭鐞?/span>
20 @Component("loggerAspect")
21 public class LoggerAspect {
22     //@Before鏍囨敞鐨勬柟娉曟剰涓哄皢璇ユ柟娉曚綔鐢ㄤ簬鍒囧叆鐐硅〃杈懼紡娉ㄦ槑鐨勬柟娉曚箣鍓嶆墽琛岋紝鍙互鐞嗚В涓哄垱寤轟竴涓氱煡錛?br />23     //鍏充簬鍒囧叆鐐硅〃杈懼紡錛歟xecution(* org.duyt.dao.*.add*(..)
24     //絎竴涓?浠h〃鐫浠繪剰綾誨瀷榪斿洖鍊肩殑鏂規硶
25     //涔嬪悗璺熺┖鏍鹼紝娣誨姞涓涓寘鐨勮礬寰勶紝絎簩涓?琛ㄧず璇ュ寘璺緞涓嬬殑鎵鏈夌被
26     //涔嬪悗娣誨姞“.”錛屽啀璺熼渶瑕佸垏鍏ョ殑鏂規硶錛屾澶勬寚瀹氫簡鎵鏈変互add,delete,update寮澶寸殑鏂規硶錛屼嬌鐢?#8220;||”騫跺垪榪炴帴榪欎簺琛ㄨ揪寮?br />27     //鏈鍚庣殑“(..)”琛ㄧず浠繪剰涓暟鐨勫弬鏁板垪琛?/span>
28     @Before("execution(* org.duyt.dao.*.add*(..))||"
29             + "execution(* org.duyt.dao.*.delete*(..))||"
30             + "execution(* org.duyt.dao.*.update*(..))")
31     public void loggerBefore(JoinPoint jp) {
32         // System.out.println(jp.getTarget());//org.duyt.dao.impl.UserDao@71eecfa7錛岃幏鍙栨墽琛岀殑瀵硅薄
33         // System.out.println(jp.getSignature().getName());//add錛岃幏鍙栨柟娉曠鍚?/span>
34         Logger.info("鍓嶇疆鍒囧叆鐐癸細execute==>" + jp.getTarget() + "==>"
35                 + jp.getSignature().getName() + " method");
36     }
37     @After("execution(* org.duyt.dao.*.add*(..))||"
38             + "execution(* org.duyt.dao.*.delete*(..))||"
39             + "execution(* org.duyt.dao.*.update*(..))")
40     public void loggerAfter(JoinPoint jp) {
41         Logger.info("鍚庣疆鍒囧叆鐐癸細execute==>" + jp.getTarget() + "==>"
42                 + jp.getSignature().getName() + " method");
43     }
44     @Around("execution(* org.duyt.dao.*.add*(..))||"
45             + "execution(* org.duyt.dao.*.delete*(..))||"
46             + "execution(* org.duyt.dao.*.update*(..))")
47     public void loggerAround(ProceedingJoinPoint pjp) throws Throwable {
48         Logger.info("鐜粫寮濮嬪垏鍏ョ偣錛歟xecute==>" + pjp.getTarget() + "==>"
49                 + pjp.getSignature().getName() + " method");
50         pjp.proceed();//鎵ц鏂規硶
51         Logger.info("鐜粫緇撴潫鍒囧叆鐐癸細execute==>" + pjp.getTarget() + "==>"
52                 + pjp.getSignature().getName() + " method");
53     }
54 }
55 
DAO鍜孲ervice鍐呭鐣ワ紝嫻嬭瘯綾誨涓?br />
 1 package org.duyt.test;
 2 
 3 import org.duyt.action.UserAction;
 4 import org.junit.Test;
 5 import org.springframework.beans.factory.BeanFactory;
 6 import org.springframework.context.support.ClassPathXmlApplicationContext;
 7 
 8 public class IocTest {
 9 
10     private BeanFactory factory = new ClassPathXmlApplicationContext("beans.xml");
11     
12     @Test
13     public void test(){
14         //鍩轟簬annotation鐨凙OP
15         UserAction ua = (UserAction) factory.getBean("userAction");
16         ua.addUser();
17     }
18     
19 }
20 
緇撴灉錛?br />
鍓嶇疆鍒囧叆鐐癸細execute==>org.duyt.dao.impl.UserDao@6fc8ddb5==>add method
鐜粫寮濮嬪垏鍏ョ偣錛歟xecute==>org.duyt.dao.impl.UserDao@6fc8ddb5==>add method
鐢ㄦ埛澧炲姞鏂規硶
鍚庣疆鍒囧叆鐐癸細execute==>org.duyt.dao.impl.UserDao@6fc8ddb5==>add method
鐜粫緇撴潫鍒囧叆鐐癸細execute==>org.duyt.dao.impl.UserDao@6fc8ddb5==>add method


]]>
娓╂晠鐭ユ柊:spring_05鍔ㄦ佷唬鐞嗗疄鐜癆OPhttp://m.tkk7.com/produ/articles/419509.html閮借緝鐦?/dc:creator>閮借緝鐦?/author>Tue, 04 Nov 2014 15:24:00 GMThttp://m.tkk7.com/produ/articles/419509.htmlhttp://m.tkk7.com/produ/comments/419509.htmlhttp://m.tkk7.com/produ/articles/419509.html#Feedback0http://m.tkk7.com/produ/comments/commentRss/419509.htmlhttp://m.tkk7.com/produ/services/trackbacks/419509.html
IUserDao 
1 package org.duyt.dao;
2 import org.duyt.annotation.LogMsg;
3 public interface IUserDao {
4     public void add();
5 }
UserDao
 1 package org.duyt.dao.impl;
 2 import org.duyt.dao.IUserDao;
 3 import org.springframework.context.annotation.Scope;
 4 import org.springframework.stereotype.Repository;
 5 @Repository("userDao")
 6 @Scope("singleton")
 7 public class UserDao implements IUserDao {
 8     public void add() {
 9         System.out.println("鐢ㄦ埛澧炲姞鏂規硶");
10     }
11 }
鍒涘緩浠g悊綾伙紝榪欎釜浠g悊綾葷殑涓昏浣滅敤灝辨槸涓轟紶鍏ョ殑琚唬鐞嗗璞★紝娣誨姞鏂規硶鎵ц鍓嶇殑璁板綍鏃ュ織鍔熻兘
 1 package org.duyt.dao.proxy;
 2 
 3 import java.lang.reflect.InvocationHandler;
 4 import java.lang.reflect.Method;
 5 import java.lang.reflect.Proxy;
 6 
 7 public class DaoLoggerProxy implements InvocationHandler {
 8     
 9     //浣跨敤灞炴т繚瀛橈紝瑕佷唬鐞嗙殑鐩爣瀵硅薄
10     private Object target;
11     
12     //縐佹湁絀烘瀯閫?/span>
13     private DaoLoggerProxy(){
14     }
15     
16     //宸ュ巶鏂規硶
17     public static Object getInstance(Object o){
18         DaoLoggerProxy proxy = new DaoLoggerProxy();
19         //淇濆瓨瑕佷唬鐞嗙殑瀵硅薄
20         proxy.target = o;
21         //鍒涘緩浼犲叆瀵硅薄鐨勪唬鐞嗗璞?/span>
22         Object result = Proxy.newProxyInstance(o.getClass().getClassLoader(), o.getClass().getInterfaces(), proxy);
23         //榪斿洖鍒涘緩鐨勪唬鐞嗗璞?/span>
24         return result;
25     }
26 
27     //琚唬鐞嗗璞″湪璋冪敤浠諱綍鏂規硶鐨勬椂鍊欙紝閮戒細鍏堣皟鐢ㄤ唬鐞嗙被鐨刬nvoke鏂規硶錛岄偅涔堝湪姝わ紝灝卞彲浠ュ湪琚唬鐞嗗璞℃柟娉曟墽琛岀殑浠繪剰涓涓祦紼嬫坊鍔犻渶瑕佺殑鍔熻兘
28     public Object invoke(Object proxy, Method method, Object[] args)
29             throws Throwable {
30         
31         /*if (method.isAnnotationPresent(XXX.class)) {
32             鍙互鑷畾涔夋敞瑙g粰鐗瑰畾鏂規硶錛岃瀹氳繖浜涙柟娉曟墽琛屽摢浜涚壒孌婄殑鎿嶄綔
33         }*/
34         
35         /*if (method.getName().startsWith("add")) {
36             瀵規煇浜涚害瀹氫簡鏂規硶鍚嶇殑鏂規硶鎷撳睍闇瑕佺殑鍔熻兘
37         }*/
38         
39         /*try {
40             Object obj = method.invoke(target, args);
41         } catch (Exception e) {
42             璁板綍寮傚父鐨勬搷浣滐紝鎴栬呭洖婊氭搷浣?br />43         }*/
44         
45         //鍦ㄨ浠g悊瀵硅薄鏂規硶鎵ц涔嬪墠榪涜鏌愪簺鎿嶄綔
46         
47         System.out.println("---->妯℃嫙璁板綍鏃ュ織<----");
48         Object obj = method.invoke(target, args);
49         
50         //涔嬪悗榪涜鏌愪簺鎿嶄綔
51         
52         return obj;
53     }
54 
55 }
56 
beans.xml闇瑕佷綔鍑哄涓嬮厤緗?br />
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xmlns:context="http://www.springframework.org/schema/context"
 5     xsi:schemaLocation="http://www.springframework.org/schema/beans 
 6                         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 7                         http://www.springframework.org/schema/context
 8                         http://www.springframework.org/schema/context/spring-context-3.0.xsd">
 9 
10     <!-- 寮鍚敞瑙?nbsp;-->
11     <context:annotation-config/>
12     <!-- 鎸囧畾鍝簺闇瑕佸姞鍏ユ壂鎻?nbsp;-->
13     <context:component-scan base-package="org.duyt.*"/>
14 
15     <!-- 闄愬畾浜嗙鏈夋瀯閫犳柟娉曪紝鎵浠ヤ笉鑳界洿鎺ュ垱寤轟唬鐞嗙被錛岄渶瑕佷紶鍏ヨ浠g悊瀵硅薄錛屼嬌鐢ㄥ伐鍘傛柟娉曡繑鍥炰唬鐞嗗璞★紝鍥犳闇瑕佹寚瀹氬伐鍘傛柟娉曪紝騫朵笖璇ユ柟娉曞湪class灞炴ф寚鍚戠殑綾諱腑瑕佷負闈欐佹柟娉?nbsp;-->
16     <bean id="daoLoggerProxy" class="org.duyt.dao.proxy.DaoLoggerProxy" factory-method="getInstance">
17         <!-- 閫氳繃鏋勯犲櫒鍙傛暟鏉ヤ紶鍏ヨ浠g悊鐨勫璞?nbsp;-->
18         <constructor-arg ref="userDao"/>
19     </bean>
20     
21 </beans>
閰嶇疆瀹屾瘯涔嬪悗錛屼嬌鐢ㄤ唬鐞嗘敞鍏serDao錛孈Resource(name = "daoLoggerProxy")錛屾祴璇?br />
 1 package org.duyt.test;
 2 
 3 import org.duyt.action.UserAction;
 4 import org.junit.Test;
 5 import org.springframework.beans.factory.BeanFactory;
 6 import org.springframework.context.support.ClassPathXmlApplicationContext;
 7 
 8 public class IocTest {
 9 
10     private BeanFactory factory = new ClassPathXmlApplicationContext("beans.xml");
11     
12     @Test
13     public void test(){
14         //嫻嬭瘯浠g悊綾繪嫇灞曠殑鍔熻兘
15         UserAction ua = (UserAction) factory.getBean("userAction");
16         ua.addUser();
17     }
18     
19 }
20 
緇撴灉錛?br />
---->妯℃嫙璁板綍鏃ュ織<----
鐢ㄦ埛澧炲姞鏂規硶


]]>
娓╂晠鐭ユ柊:spring_04闈欐佷唬鐞嗗疄鐜癆OPhttp://m.tkk7.com/produ/articles/419488.html閮借緝鐦?/dc:creator>閮借緝鐦?/author>Tue, 04 Nov 2014 06:57:00 GMThttp://m.tkk7.com/produ/articles/419488.htmlhttp://m.tkk7.com/produ/comments/419488.htmlhttp://m.tkk7.com/produ/articles/419488.html#Feedback0http://m.tkk7.com/produ/comments/commentRss/419488.htmlhttp://m.tkk7.com/produ/services/trackbacks/419488.htmlAspect Oriented Programming錛夐潰鍚戝垏闈㈢殑緙栫▼錛宻pring鐨凙OP鐗規т嬌寰楀浜庝嬌鐢ㄤ簡璇ョ壒鎬х殑欏圭洰鐨勫彲緇存姢鎬э紝鏄撴嫇灞曟у拰寮鍙戦毦鏄撳害絳夌瓑閮芥湁浜嗕笉鍚岀▼搴︾殑鏀瑰杽銆侫OP鐗規ц兘澶熶嬌寰楅」鐩腑鐨勬煇浜涙搷浣滐紝鍦ㄦ墽琛屽埌鏌愪竴涓寚瀹氱幆鑺傜殑鏃跺欙紝鍙互棰濆鐨勫幓鎵ц寮鍙戣呮寚瀹氱殑鎿嶄綔錛岃繖浜涙搷浣滃線寰閮芥槸鍏鋒湁鍏遍氭э紝鑰屼笖鍙兘鍜屾搷浣滄湰韜墍鍖呭惈鐨勪笟鍔¢昏緫娌℃湁鐩存帴鐨勫叧緋伙紝姣斿瀵規暟鎹簱鐨勮闂紝娑夊強鍙樻洿鏁版嵁搴撳唴瀹圭殑鎿嶄綔闇瑕佺簿鍑嗙殑璁板綍鏃ュ織錛涙瘡褰撲駭鐢熷紓甯告垨鑰呴敊璇俊鎭殑鏃跺欙紝涔熼渶瑕佽褰曢敊璇俊鎭紱瀵規湇鍔″櫒鏁忔劅璧勬簮榪涜璁塊棶鐨勬椂鍊欓渶瑕佸鐢ㄦ埛鐨勬潈闄愯繘琛屾牎楠岀瓑銆傚湪鍝簺鐜妭娣誨姞澶勭悊錛屽仛鎬庢牱鐨勫鐞嗭紝閮藉彲浠ョ敱寮鍙戣呰嚜瀹氫箟錛屽崄鍒嗙伒媧伙紝鑰屼笖鍦ㄥ紑鍙戜笟鍔¢昏緫鍜屾祦紼嬬殑鏃跺欏ぇ鍙笉蹇呭幓鑰冭檻榪欎簺鍏卞悓鎬ц川鐨勫鐞嗭紝璁╀富瑕佺簿鍔涢兘鎶曞叆鍦ㄤ笟鍔$殑瀹炵幇涓婏紝榪欐牱涓鏉ワ紝寮鍙戞晥鐜囦細澶уぇ鎻愰珮銆?br />
鍏堜粠涓涓潤鎬佷唬鐞嗙殑渚嬪瓙鏉ユ劅鍙椾竴涓嬭繖縐嶅垏鍏ュ紡鐨勭紪紼?br />IUserDao
1 package org.duyt.dao;
2 public interface IUserDao {
3     public void add();
4 }
UserDao
 1 package org.duyt.dao.impl;
 2 
 3 import org.duyt.dao.IUserDao;
 4 import org.springframework.context.annotation.Scope;
 5 import org.springframework.stereotype.Repository;
 6 
 7 @Repository("userDao")
 8 @Scope("singleton")
 9 public class UserDao implements IUserDao {
10     public void add() {
11         System.out.println("鐢ㄦ埛澧炲姞鏂規硶");
12     }
13 }
14 
涓涓緢鍗曠函鐨勬帴鍙e疄鐜般傚樿嫢榪欏氨鏄竴涓垚鍝佷簡錛屾祴璇曢氳繃娌℃湁闂錛屽彲浠ヤ笂綰夸嬌鐢ㄣ備竴孌墊椂闂翠箣鍚庯紝闇瑕佸姞鍏ユ棩蹇楃殑鍔熻兘錛岄偅涔堥棶棰樻潵浜嗭紝鎸栨帢鏈哄摢...鍣笉瀵癸紝璇ュ浣曟坊鍔犲憿錛?br />鎴栬浼氶┈涓婃兂鍒幫紝鐩存帴璇ュ晩銆傞偅涔堥棶棰樺張鏉ヤ簡錛屾寲...鍣笉錛岀洿鎺ヤ慨鏀圭殑璇濓紝浠g爜灝遍渶瑕佹祴璇曪紝鑰屼笖涓囦竴闇瑕佷慨鏀圭殑鍦版柟寰堝鍛紝宀備笉鏄緢鐥涜嫤錛屽喌涓旂洿鎺ヤ慨鏀規簮浠g爜榪樿繚鑳屼簡OCP鍘熷垯錛岀粷瀵逛笉鎺ㄨ崘銆傝繖鏃跺欏氨鍙互鑰冭檻浣跨敤浠g悊綾繪潵緇欐簮浠g爜澧炲姞鏂板姛鑳姐?br />浠g悊錛屾湜鏂囩敓涔夛紝鐧借瘽灝辨槸“浣犺鍋氱殑浜嬪効鎴戜笉浠呰兘緇欎綘鍋氫簡錛岃屼笖闄ゆ涔嬪鎴戣繕鑳藉鍋氬埆鐨?#8221;錛屽畾涔変竴涓猆serProxyDao
 1 package org.duyt.dao.impl;
 2 
 3 import javax.annotation.Resource;
 4 
 5 import org.duyt.dao.IUserDao;
 6 import org.duyt.util.Logger;
 7 import org.springframework.context.annotation.Scope;
 8 import org.springframework.stereotype.Repository;
 9 
10 @Repository("userProxyDao")
11 @Scope("singleton")
12 public class UserProxyDao implements IUserDao {
13 
14     @Resource
15     private IUserDao userDao;
16     
17     public void add() {
18         Logger.info("浣跨敤浠g悊錛屼負鐢ㄦ埛澧炲姞鏂規硶娣誨姞鏃ュ織");
19         userDao.add();
20 
21     }
22 
23 }
24 
鍦ㄤ唬鐞嗕腑錛屽皢闇瑕佹嫇灞曞姛鑳界殑瀵硅薄浣滀負浠g悊鐨勫睘鎬ф敞鍏ワ紝鐒跺悗鍦ㄩ渶瑕佹嫇灞曠殑鏂規硶鍓嶅悗榪藉姞闇瑕佺殑鍔熻兘銆傚湪姝や箣鍚庯紝鍦ㄧ粰service鐨処userDao瀵硅薄娉ㄥ叆瀹炰緥鐨勬椂鍊欙紝瑕佷嬌鐢ㄤ唬鐞嗙殑瀵硅薄@Resource(name = "userProxyDao")錛屾祴璇曚竴涓?br />
 1 package org.duyt.test;
 2 
 3 import org.duyt.action.UserAction;
 4 import org.junit.Test;
 5 import org.springframework.beans.factory.BeanFactory;
 6 import org.springframework.context.support.ClassPathXmlApplicationContext;
 7 
 8 public class IocTest {
 9 
10     private BeanFactory factory = new ClassPathXmlApplicationContext("beans.xml");
11     
12     @Test
13     public void test(){
14         //嫻嬭瘯浠g悊渚濊禆娉ㄥ叆
15         UserAction ua = (UserAction) factory.getBean("userAction");
16         ua.addUser();
17     }
18     
19 }
20 
緇撴灉錛?br />
浣跨敤浠g悊錛屼負鐢ㄦ埛澧炲姞鏂規硶娣誨姞鏃ュ織
鐢ㄦ埛澧炲姞鏂規硶

鐢變簬IOC鍜孉OP鐨勭壒鎬э紝浣犱細鍙戠幇浣犺鍋氱殑鏇存敼鍗佸垎鐨勫皯錛屼粎浠呭彧鏄柊澧炰簡涓涓唬鐞嗙被錛屽茍淇敼浜嗘敞鍏ョ殑瀵硅薄銆傝櫧鐒墮潤鎬佺殑浠g悊鍙互瀹炵幇鎴戜滑鐨勯渶姹傦紝浣嗘槸姣曠珶涓嶇伒媧伙紝涓鏃︿慨鏀規秹鍙婄殑鏂規硶鍜岀被涓澶氾紝閭g畝鐩村氨鏄函浣撳姏媧諱簡錛屼竴涓被鐨勬嫇灞曞氨闇瑕佸搴斾竴涓唬鐞嗙被錛屼竴涓唬鐞嗙被涓繕闇瑕佹兜鐩栨墍鏈夐渶瑕佹嫇灞曠殑鏂規硶錛屽茍涓斾繚璇佸師鏈夊姛鑳戒笉鍙楀獎鍝嶏紝濡傛涓鏉ワ紝鍔熻兘鎷撳睍榪欎竴涓懼姩灝遍渶瑕佹姇鍏ユ瀬澶х殑鎴愭湰錛屽叆涓嶆暦鍑恒?img src ="http://m.tkk7.com/produ/aggbug/419488.html" width = "1" height = "1" />

]]>
娓╂晠鐭ユ柊:spring_03鍩轟簬annotation閰嶇疆IOChttp://m.tkk7.com/produ/articles/419477.html閮借緝鐦?/dc:creator>閮借緝鐦?/author>Tue, 04 Nov 2014 03:17:00 GMThttp://m.tkk7.com/produ/articles/419477.htmlhttp://m.tkk7.com/produ/comments/419477.htmlhttp://m.tkk7.com/produ/articles/419477.html#Feedback0http://m.tkk7.com/produ/comments/commentRss/419477.htmlhttp://m.tkk7.com/produ/services/trackbacks/419477.html
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xmlns:context="http://www.springframework.org/schema/context"
 5     xsi:schemaLocation="http://www.springframework.org/schema/beans 
 6                         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 7                         http://www.springframework.org/schema/context
 8                         http://www.springframework.org/schema/context/spring-context-3.0.xsd">
 9 
10     <!-- 寮鍚敞瑙?nbsp;-->
11     <context:annotation-config/>
12     <!-- 鎸囧畾鍝簺闇瑕佸姞鍏ユ壂鎻?nbsp;-->
13     <context:component-scan base-package="org.duyt.*"/>
14 
15 </beans>
鎷垮嚭涓涓狣ao緇勪歡鐨勬敞鍏ヤ負渚?br />
1 package org.duyt.dao;
2 public interface IUserDao {
3     public void add();
4     public void delete();
5     public void update();
6     public void load();
7 }
Dao鐨勫疄鐜?br />
 1 package org.duyt.dao.impl;
 2 
 3 import org.duyt.dao.IUserDao;
 4 import org.springframework.context.annotation.Scope;
 5 import org.springframework.stereotype.Repository;
 6 
 7 //浣跨敤Repository("userDao")鏍囨敞UserDao綾葷浉褰撲簬鍦ㄩ厤緗枃浠朵腑鍐欎綔
 8 //<bean id="userDao" class="org.duyt.dao.impl.UserDao"/>
 9 @Repository("userDao")
10 //鐩稿簲鐨勶紝Scope("singleton")鏍囨敞灝辯浉褰撲簬鐨勯厤緗畇cope="singleton"
11 @Scope("singleton")
12 public class UserDao implements IUserDao {
13     public void add() {
14         System.out.println("鐢ㄦ埛澧炲姞鏂規硶");
15     }
16     public void delete() {
17         System.out.println("鐢ㄦ埛鍒犻櫎鏂規硶");
18     }
19     public void update() {
20         System.out.println("鐢ㄦ埛鏇存柊鏂規硶");
21     }
22     public void load() {
23         System.out.println("鐢ㄦ埛鏌ヨ鏂規硶");
24     }
25 }
26 
spring鎻愪緵浜嗕笁縐嶆敞瑙f潵瀵瑰簲MVC鐨勪笁灞傦紝鏁版嵁灞傜殑娉ㄨВ瀵瑰簲Repository錛屼笟鍔″眰瀵瑰簲service錛岃〃紺哄眰瀵瑰簲controller銆傝繕鏈変竴涓叕鍏辯殑component錛屽垎寮榪欎箞澶氭槸涓轟簡鏇村ソ鐨勬爣娉ㄥ綋鍓嶈繖涓緟娉ㄥ叆綾葷殑鍔熻兘錛屽鏋滀笉鎸夌収榪欎簺鍒嗙被濂界殑娉ㄨВ鍘繪敞鍏ヤ篃鍙互瀹屾垚娉ㄥ叆錛屼絾鏄繕鏄鑼冪殑鍘誨啓銆傚叧浜庡璞′腑鏌愪釜灞炴х殑娉ㄥ叆鐪嬩笅闈㈢殑action
 1 package org.duyt.action;
 2 
 3 import javax.annotation.Resource;
 4 
 5 import org.duyt.domain.User;
 6 import org.duyt.service.IUserService;
 7 import org.springframework.context.annotation.Scope;
 8 import org.springframework.stereotype.Controller;
 9 
10 @Controller("userAction")
11 @Scope("prototype")
12 public class UserAction {
13     @Resource
14     private IUserService userService;
15     public String testString;
16     public User user;
17     
18     public UserAction() {
19     }
20     
21     public UserAction(String testString) {
22         super();
23         this.testString = testString;
24     }
25 
26     public void addUser(){
27         userService.add();
28     }
29     //get/set鐣?/span>
30 }
31 
瀵逛簬鏌愪釜瑕佹敞鍏ョ殑灞炴э紝Spring鑷甫鐨勬敞瑙f槸@AutoWire錛屼絾鏄繖縐嶆槸鎸夌収綾誨瀷娉ㄥ叆鐨勶紝涓轟簡閬垮厤鎺ュ彛澶氬疄鐜板彲鑳藉嚭鐜扮殑闂錛屾帹鑽愬彲浠ヤ嬌鐢╦avax.annotation鎻愪緵鐨凘resource錛岃繖縐嶆槸鎸夌収灞炴х殑鍚嶇О榪涜娉ㄥ叆錛屽彲浠ョ洿鎺ュ湪灞炴у悕涔嬩笂娣誨姞娉ㄨВ錛岃繖鏍風殑璇濊繛灞炴х殑get/set閮藉彲浠ョ渷浜?..鎴栬呮槸娣誨姞瀵瑰簲鐨刧et/set錛屽湪set鏂規硶涓婃坊鍔犳敞瑙c備絾鏄娉ㄦ剰鐨勬槸錛屾寜鐓у睘鎬у悕瀛楄繘琛屾敞鍏ワ紝灞炴х殑鍚嶇О闇瑕佸拰娉ㄨВ瀹氫箟緇勪歡鏃剁殑id涓鑷淬侫ction涓殑Iuserservice鐨勫疄渚嬪悕涓簎serService錛屼細瀵繪壘鏈堾service("userService")鐨勬敞瑙h繘琛屾敞鍏ワ紝鍚﹀垯浼氭敞鍏ュけ璐ャ?br />嫻嬭瘯濡備笅
 1 package org.duyt.test;
 2 import org.duyt.action.UserAction;
 3 import org.junit.Test;
 4 import org.springframework.beans.factory.BeanFactory;
 5 import org.springframework.context.support.ClassPathXmlApplicationContext;
 6 public class IocTest {
 7     private BeanFactory factory = new ClassPathXmlApplicationContext("beans.xml");
 8     @Test
 9     public void test(){
10         
11         //嫻嬭瘯渚濊禆娉ㄥ叆
12         UserAction ua = (UserAction) factory.getBean("userAction");
13         UserAction ua2 = (UserAction) factory.getBean("userAction");
14         System.out.println(ua == ua2);
15         ua.addUser();
16     }
17 }
18 
緇撴灉涓猴細
false
鐢ㄦ埛澧炲姞鏂規硶


]]>
娓╂晠鐭ユ柊:spring_02鍩轟簬XML閰嶇疆IOChttp://m.tkk7.com/produ/articles/419462.html閮借緝鐦?/dc:creator>閮借緝鐦?/author>Mon, 03 Nov 2014 14:46:00 GMThttp://m.tkk7.com/produ/articles/419462.htmlhttp://m.tkk7.com/produ/comments/419462.htmlhttp://m.tkk7.com/produ/articles/419462.html#Feedback0http://m.tkk7.com/produ/comments/commentRss/419462.htmlhttp://m.tkk7.com/produ/services/trackbacks/419462.html絎竴涓渚嬪凡緇忔槸鍩轟簬XML閰嶇疆spring鐨勫伐鍘備簡錛岄偅涔堢幇鍦紝姝d簡鍏櫙鐨勯厤緗竴涓嬨?br />
MVC 鐨勪笁灞傚紡緇撴瀯宸茬粡娣卞叆浜哄績浜嗭紝浣嗘槸鍦ㄦ涓嶅緱涓嶇◢寰悙妲戒竴涓嬶紝铏界劧灞傛娓呮櫚錛屼絾鏄繕鏄湁涓嶅皯寮鍙戣咃紝鐢氳嚦涓浜涚珯鐐癸紝灝嗚繖浜涘眰嬈℃販娣嗭紝鍦ㄦ湰鏉ュ崟鍗曟槸鐣岄潰灞傜殑欏?闈腑錛屾垨鑰呮槸鎺у埗鍣ㄤ腑宓屽叆浜嗗ぇ閲忕殑涓氬姟浠g爜錛岃屼笟鍔″眰鍜屾暟鎹眰鍗村共騫插噣鍑錛屽氨鏄畾涔変簡鍗曠函鎺ュ彛鍔犲搴斿疄鐜般傛洿鏈夌敋鑰呭湪DAO涓彇request...浣犺榪欎箞鍐欒繕鍒嗘瘺綰垮眰鍟?..綰垮眰鍟?..灞傚晩錛佸挸鍜?..璦褰掓浼狅紝瀹氫箟濂芥紨紺虹敤鐨勬暟鎹眰鍜屼笟鍔″眰鐨勬帴鍙e拰瀹炵幇綾?/div>
DaoInterface
1 package org.duyt.dao;
2 public interface IUserDao {
3     public void add();
4 }
DaoImpl
1 package org.duyt.dao.impl;
2 import org.duyt.dao.IUserDao;
3 public class UserDao implements IUserDao {
4     public void add() {
5         System.out.println("鐢ㄦ埛澧炲姞鏂規硶");
6     }
7 }
ServiceInterface
1 package org.duyt.service;
2 public interface IUserService {
3     public void add();
4 }
5 
ServiceImpl
 1 package org.duyt.service.impl;
 2 import org.duyt.dao.IUserDao;
 3 import org.duyt.service.IUserService;
 4 public class UserService implements IUserService {
 5     private IUserDao userDao;
 6     public void add() {
 7         userDao.add();
 8     }
 9     public IUserDao getUserDao() {
10         return userDao;
11     }
12     public void setUserDao(IUserDao userDao) {
13         this.userDao = userDao;
14     }
15 }
瀹炰綋綾?br />
 1 package org.duyt.domain;
 2 import java.util.List;
 3 import java.util.Map;
 4 public class User {
 5     private int id;
 6     private String name;
 7     private Map<Object, Object> mapTest;
 8     private List<Object> listTest;
 9     public User() {
10     }
11     public User(int id, String name) {
12         this.id = id;
13         this.name = name;
14     }
15     //get/set鐣?/span>
15 }
16 
Action
 1 package org.duyt.action;
 2 import org.duyt.domain.User;
 3 import org.duyt.service.IUserService;
 4 public class UserAction {
 5     private IUserService userService;
 6     private String testStringA;
 7     private String testStringB;
 8     private User user;
 9     public UserAction(String testStringA,String testStringB) {
10         this.testStringA = testStringA;
11         this.testStringB = testStringB;
12     }
13     public UserAction() {
14     }
15     //get/set鐣?/span>
16 }
17 

 1 package org.duyt.action;
 2 import org.duyt.service.IUserService;
 3 public class AutowiredAction {
 4     private IUserService userService;
 5     public void add(){
 6         userService.add();
 7     }
 8     //get/set鐣?/span>
 9 }
10 
閲嶇偣鏄痓eans.xml鐨勯厤緗?br />
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://www.springframework.org/schema/beans 
 5                         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" >
 6                         <!-- default-autowire="byName" 姝ゅ鍙互璁劇疆鍏ㄥ眬鐨勮嚜鍔ㄦ敞鍏ワ紝寮鍚箣鍚庢墍鏈塨ean鍐呯殑灞炴ч兘浼氳嚜鍔ㄦ寜鍚嶇О娉ㄥ叆-->
 7 
 8     <!-- scope琛ㄧず涓涓璞$殑鏈夋晥鑼冨洿錛宻ingleton琛ㄧず鍗曚緥錛宲rototype琛ㄧず鍘熷瀷錛屼篃灝辨槸澶氫緥錛屾瘡嬈¢兘浼氳幏鍙栦竴涓柊鐨勫疄渚嬨?nbsp;
 9     鍗曚緥鍜屽師鍨嬫槸鏈甯哥敤鐨勬柟寮忥紝spring榪樻彁渚涗簡浠equest鍜宻ession涓轟嬌鐢ㄨ寖鍥寸殑鎺у埗錛屾槸鍚︿嬌鐢ㄨ浠佽鏅恒?/span>-->
10     
11     <!-- 鏈夋晥鑼冨洿鐨勯夋嫨闇瑕佹牴鎹産ean鐨勭敤閫旀潵鍐沖畾錛屾瘮濡侫ction瀹炰緥灝遍渶瑕侀夋嫨prototype錛屽鏋滀嬌鐢ㄥ崟渚嬪幓鑾峰彇Action瀹炰緥
12     閭d箞Action鐨勫睘鎬у彲鑳戒細褰卞搷鍓嶅悗鐨勮姹傦紝瀵硅薄瀹炰緥鐨勭姸鎬佷細褰卞搷鍏舵湰韜殑鍔熻兘錛岄偅涔堝氨闇瑕佷嬌鐢ㄥ師鍨嬪幓鑾峰彇瀵硅薄鐨勫疄渚嬶紱鑰宻ervice
13     鍜孌ao鐨勫疄渚嬪氨鏃犻』鎷呭績錛岀洿鎺ヤ嬌鐢ㄥ崟渚嬭幏鍙栧疄渚嬪嵆鍙紝涓嶄細鍥犱負鑷韓鐨勫睘鎬х姸鎬佽屽獎鍝嶅姛鑳界殑瀹炵幇錛屽洜涓轟粬浠湰韜笉瀛樺湪鐘舵併傞粯璁ゆ儏鍐典笅
14     浼氫嬌鐢ㄥ崟渚嬭繘琛屽璞″疄渚嬬殑鍒涘緩銆?nbsp;-->
15     <bean id="userAction" class="org.duyt.action.UserAction" scope="prototype">
16         <!-- property鏄寚瀹氳娉ㄥ叆鐨勫睘鎬э紝閫氳繃灞炴х殑set鏂規硶榪涜娉ㄥ叆錛宺ef鍒欐槸瀵筨ean鐨勫紩鐢?/span>-->
17         <property name="userService" ref="userService"/>
18         <property name="user" ref="user"/>
19         
20         <!-- 閫氳繃鏋勯犳柟娉曡繘琛屽睘鎬х殑娉ㄥ叆錛屽墠鎻愭槸瑕佹湁鍙惈鏈変笅榪頒袱涓弬鏁扮殑鏋勯犳柟娉曪紝榪樿鏈夌┖鏋勯?nbsp;-->
21         <constructor-arg name="testStringA" value="嫻嬭瘯鐢ㄥ瓧絎︿覆AAA"/>
22         <constructor-arg name="testStringB" value="嫻嬭瘯鐢ㄥ瓧絎︿覆BBB"/>
23     </bean>
24     
25     <!-- 涓鑸睘鎬х殑娉ㄥ叆鍜岄泦鍚堝璞″睘鎬х殑娉ㄥ叆-->
26     <bean id="user" class="org.duyt.domain.User" scope="prototype">
27         <property name="id" value="1"/>
28         <property name="name" value="duyt"/>
29         <!-- 娉ㄥ叆map -->
30         <property name="mapTest">
31             <map>
32                 <entry key="1" value="nihao"/>
33                 <entry key="2" value="hello"/>
34             </map>
35         </property>
36         <!-- 娉ㄥ叆list -->
37         <property name="listTest">
38             <list>
39                 <value>1</value>
40                 <value>2</value>
41                 <value>3</value>
42             </list>
43         </property>
44     </bean>
45     
46     <!-- 姝ゅ璁劇疆浜哸utowire = byName灞炴э紝浼氭牴鎹垚鍛樺彉閲忕殑鍚嶇О鑷姩鎼滅儲瀵瑰簲鐨刡ean騫舵敞鍏?榪欐槸鎺ㄨ崘鐨勬柟寮忥紝鍥犱負bean鐨勫悕瀛楁槸涓嶅簲璇ラ噸澶嶇殑錛?br />47     鍙灞炴х殑鍚嶇О鑳藉鍖歸厤鍒癰ean鐨刬d錛屽茍涓斿睘鎬у惈鏈塯et/set錛岄偅涔堝氨浼氭垚鍔熸敞鍏ャ傝繕鏈変竴縐嶆柟寮忔槸鎸夌収綾誨瀷娉ㄥ叆byType錛屾寜鐓х被鍨嬫敞鍏ュ彲鑳戒細瀛樺湪涓涓帴鍙?br />48     鏈夊涓疄鐜扮被鐨勬儏鍐碉紝姣斿action鐨刋XXservice鎺ュ彛鏈夊涓疄鐜扮被錛岄偅涔堟敞鍏ョ殑鏃跺欎細浜х敓寮傚父 -->
49     <bean id="autowiredAction" class="org.duyt.action.AutowiredAction" scope="prototype" autowire="byName"/>
50     
51     <bean id="userDao" class="org.duyt.dao.impl.UserDao" scope="singleton"/>
52     <bean id="userService" class="org.duyt.service.impl.UserService" scope="singleton">
53         <property name="userDao" ref="userDao"/>
54     </bean>
55 
56 </beans>
鏈鍚庝嬌鐢ㄦ祴璇曠被鏉ラ獙璇佹敞鍏ョ殑鎯呭喌
 1 package org.duyt.test;
 2 
 3 import org.duyt.action.AutowiredAction;
 4 import org.duyt.action.UserAction;
 5 import org.junit.Test;
 6 import org.springframework.beans.factory.BeanFactory;
 7 import org.springframework.context.support.ClassPathXmlApplicationContext;
 8 
 9 public class IocTest {
10 
11     private BeanFactory factory = new ClassPathXmlApplicationContext("beans.xml");
12     
13     @Test
14     public void test(){
15         UserAction ua = (UserAction) factory.getBean("userAction");
16         //嫻嬭瘯浣跨敤鏋勯犳柟娉曡繘琛屾敞鍏?/span>
17         System.out.println(ua.getTestStringA());
18         System.out.println(ua.getTestStringB());
19         //灞炴ф敞鍏?/span>
20         System.out.println(ua.getUser().getId());
21         System.out.println(ua.getUser().getName());
22         //闆嗗悎娉ㄥ叆
23         System.out.println(ua.getUser().getListTest().size());
24         System.out.println(ua.getUser().getMapTest().get("1"));
25         //鏍規嵁灞炴у悕鑷姩娉ㄥ叆
26         AutowiredAction aa = (AutowiredAction) factory.getBean("autowiredAction");
27         aa.add();
28     }
29     
30 }
31 
  


]]>娓╂晠鐭ユ柊:spring_01IOC鏁翠綋鎰熷彈http://m.tkk7.com/produ/articles/419452.html閮借緝鐦?/dc:creator>閮借緝鐦?/author>Mon, 03 Nov 2014 09:19:00 GMThttp://m.tkk7.com/produ/articles/419452.htmlhttp://m.tkk7.com/produ/comments/419452.htmlhttp://m.tkk7.com/produ/articles/419452.html#Feedback0http://m.tkk7.com/produ/comments/commentRss/419452.htmlhttp://m.tkk7.com/produ/services/trackbacks/419452.html璁板綍涓涓嬪鉤鏃跺湪浣跨敤spring鏃剁殑涓浜涙妧宸у拰蹇冨緱錛屽厛璇存槑涓涓嬫祴璇曠幆澧冦?br />
鐜濡備笅
緋葷粺錛?/strong>64浣峸in7


嫻嬭瘯鐜錛?/strong>


鍏堜粠涓涓猦elloworld鐨勭畝鍗曟渚嬪紑濮嬪惂
鏂板緩涓涓猰aven欏圭洰錛岄夋嫨


鍏跺疄涓嶈浣跨敤鍝釜妗嗘灦鎶鏈紝閮芥棤闈炰笁姝ヨ蛋錛宨mport錛宑onfig錛宺un錛岄鍏堬紝鎴戜滑import
鍥犱負浣跨敤maven鏉ョ鐞嗛」鐩紝鎵浠ョ洿鎺ユ坊鍔爏pring鐨勪緷璧栧埌pom.xml
 1         <dependency>
 2             <groupId>org.springframework</groupId>
 3             <artifactId>spring-core</artifactId>
 4             <version>3.0.5.RELEASE</version>
 5         </dependency>
 6 
 7         <dependency>
 8             <groupId>org.springframework</groupId>
 9             <artifactId>spring-context</artifactId>
10             <version>3.0.5.RELEASE</version>
11         </dependency>
涔嬪悗錛屾垜浠紑濮媍onfig錛屼綔涓轟竴涓熀鏈琁OC婕旂ず錛屽彧闇瑕佸畾涔夊伐鍘傜殑閰嶇疆銆傚畾涔変竴涓猙eans.xml鏂囦歡錛岀疆浜巗rc涓嬨傚叾涓璪ean鏍囩灝辨槸瀹氫箟beanId鍜屽緟娉ㄥ叆瀵硅薄瀹炰緥涔嬮棿鐨勬槧灝勩?br />灝辨槸“鐢ㄨ繖涓猧d鍙栧璞″疄渚嬶紝浣犱細鍙栧埌class鐨勫璞″疄渚?#8221;
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4     xsi:schemaLocation="http://www.springframework.org/schema/beans 
5                         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
6 
7     <bean id="helloSpring" class="demo.model.Demo"/>
8 
9 </beans>
婕旂ず綾?br />
 1 package demo.model;
 2 
 3 public class Demo {
 4     
 5     public Demo() {
 6     }
 7 
 8     public void hello(){
 9         System.out.println("hello");
10     }
11 }
12 
嫻嬭瘯綾?br />
 1 package org.duyt.test;
 2 
 3 import org.duyt.model.Demo;
 4 import org.junit.Test;
 5 import org.springframework.beans.factory.BeanFactory;
 6 import org.springframework.context.support.ClassPathXmlApplicationContext;
 7 
 8 public class SpringDemo {
 9 
10     //璇誨叆鎸囧畾鐨勫伐鍘傞厤緗枃浠跺埌spring鐨勫鍣紝鏂囦歡鍚嶅彲鑷畾涔?/span>
11     private BeanFactory factory = new ClassPathXmlApplicationContext("beans.xml");
12     
13     @Test
14     public void test(){
15         //鏍規嵁bean鐨刱ey鑾峰彇瀵硅薄鐨勫疄渚?/span>
16         Demo d = (Demo) factory.getBean("helloSpring");
17         //鎴栬呯洿鎺ヤ嬌鐢ㄩ噸杞界殑getBean鏂規硶錛岃瀹氬ソ闇瑕佽繑鍥炵殑綾誨瀷
18         //Demo dd =  factory.getBean("helloSpring", Demo.class);
19         d.hello();
20         //dd.hello();
21     }
22     
23 }
24 
浠ヤ笂錛屽氨鏄痵pingIOC鏈綆鏄撶殑浣跨敤銆?/div>

]]> 主站蜘蛛池模板: 久久精品国产亚洲av日韩| 大学生美女毛片免费视频| 野花香在线视频免费观看大全| 日韩亚洲人成在线综合| 欧美激情综合亚洲一二区| 亚洲成AV人片高潮喷水| 成a人片亚洲日本久久| 国产亚洲成在线播放va| 国产成人va亚洲电影| 免费夜色污私人影院网站| 午夜成人无码福利免费视频| 九九热久久免费视频| 中文字幕免费播放| 性无码免费一区二区三区在线| 免费A级毛片无码视频| 亚洲免费网站在线观看| 成年人在线免费看视频| 国产免费久久精品久久久| 亚洲国产中文字幕在线观看 | jizz免费在线影视观看网站| 一级一看免费完整版毛片| 久久免费香蕉视频| 日韩精品内射视频免费观看 | 久久久久久久99精品免费| 亚洲精品视频免费看| 午夜宅男在线永久免费观看网| 午夜神器成在线人成在线人免费| 免费看国产精品麻豆| 狠狠亚洲狠狠欧洲2019| 亚洲av激情无码专区在线播放 | www亚洲精品少妇裸乳一区二区| 国产精品亚洲不卡一区二区三区| 亚洲Av综合色区无码专区桃色 | 亚洲精品国自产拍在线观看| 亚洲国产一二三精品无码| 亚洲色av性色在线观无码| 色偷偷亚洲男人天堂| 久久精品国产大片免费观看| 最近最新MV在线观看免费高清 | 亚洲一级毛片免费看| 国产精品久久免费视频|