<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://m.tkk7.com/sxyx2008/謝謝合作!!!

    雪山飛鵠

    溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://m.tkk7.com/sxyx2008/謝謝合作!!!

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      215 Posts :: 1 Stories :: 674 Comments :: 0 Trackbacks
    所需jar包

    編寫dao
    package com.spring.dao;

    import org.springframework.stereotype.Component;

    @Component(
    "userDAO")
    public class UserDao {

        
    public void say() {
            System.out.println(
    "say method is called");
        }

        
    public void smile() {
            System.out.println(
    "smile method is called");
        }
        
        
    public void cry() {
            System.out.println(
    "cry method is called");
        }
        
        
    public void jump() {
            System.out.println(
    "jump method is called");
        }
    }
    注意觀察包名。@Component("userDAO")等價于在spring配置文件中定義一個<bean id="userDAO"/>
    編寫Service
    package com.spring.service;

    import javax.annotation.Resource;

    import org.springframework.stereotype.Component;

    import com.spring.dao.UserDao;

    @Component(
    "userService")
    public class UserService {
        
        @Resource(name
    ="userDAO")
        
    private UserDao dao;

        
    public UserDao getDao() {
            
    return dao;
        }

        
    public void setDao(UserDao dao) {
            
    this.dao = dao;
        }
        
        
    public void say() {
            dao.say();
        }

        
    public void smile() {
            dao.smile();
        }
        
        
    public void cry() {
            dao.cry();
        }
        
        
    public void jump() {
            dao.jump();
        }
    }
    注意觀察包名。@Component("userService")等價于在spring配置文件中定義一個<bean id="userService"/> @Resource(name="userDAO")將userDA注入進來
    寫一個攔截器的類
    package com.spring.aop;

    import org.springframework.stereotype.Component;

    @Component(
    "logIntercepter")
    public class LogIntercepter {
        
        
    public void before(){
            System.out.println(
    "----------before-------------");
        }
        
        
    public void after(){
            System.out.println(
    "----------after-------------");
        }
        
        
    public void exception(){
            System.out.println(
    "----------exception-------------");
        }
        
        
    public void around(){
            System.out.println(
    "----------exception-------------");
        }
    }
    注意觀察包名。@Component("logIntercepter")等價于在spring配置文件中定義一個<bean id="logIntercepter"/>
    applicationContext.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:p
    ="http://www.springframework.org/schema/p"
        xmlns:context
    ="http://www.springframework.org/schema/context"
        xmlns:aop
    ="http://www.springframework.org/schema/aop"
        xsi:schemaLocation
    ="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"
    >
        
    <context:annotation-config/>
        
    <context:component-scan base-package="com.spring.*"/>
            
    <aop:config>
                
    <aop:aspect id="aspect" ref="logIntercepter">
                    
    <aop:pointcut expression="execution(* com.spring.service..*(..))" id="pointCut"/>
                    
    <aop:before method="before" pointcut-ref="pointCut"/>
                    
    <aop:after method="after" pointcut-ref="pointCut"/>
                    
    <aop:after-throwing method="exception" pointcut-ref="pointCut"/>
                    
    <!-- 
                        <aop:around method="around" pointcut-ref="pointCut"/>
                     
    -->
                
    </aop:aspect>
            
    </aop:config>
    </beans>
    <context:annotation-config/>
     <context:component-scan base-package="com.spring.*"/>
    兩行為開啟spring的注解配置
    <aop:aspect id="aspect" ref="logIntercepter"> 引入具體的AOP操作類
    <aop:pointcut expression="execution(* com.spring.service..*(..))" id="pointCut"/>聲明一個切入點,注意execution表達式的寫法
    <aop:before method="before" pointcut-ref="pointCut"/> aop前置通知
    <aop:after method="after" pointcut-ref="pointCut"/> aop后置通知,
    <aop:after-throwing method="exception" pointcut-ref="pointCut"/> aop異常通知
    以上結合起來意思就是在調用com.spring.service包或子包下的所有方法之前或之后或拋出異常時依次調用id為logIntercepter的類中的before after exception方法
    測試用例
    package com.spring.test;

    import javax.annotation.Resource;

    import org.junit.Test;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;

    import com.spring.service.UserService;

    @ContextConfiguration(locations
    ="classpath:applicationContext.xml")
    public class SpringTest extends AbstractJUnit4SpringContextTests {

        @Resource(name
    ="userService")
        
    private UserService userService;
        
        @Test
        
    public void test1(){
            userService.say();
            System.out.println();
            userService.smile();
            System.out.println();
            userService.cry();
        }
        
    }
    此單元測試基于spring的AbstractJUnit4SpringContextTests,你需要添加spring的關于單元測試的支持
    在類上標注@ContextConfiguration(locations="classpath:applicationContext.xml")意思是去classpath路徑下加載applicationContext.xml
    @Resource(name="userService")意思是把userService注入進來

    最終輸出結果為:

    ----------before-------------
    say method is called
    ----------after-------------

    ----------before-------------
    smile method is called
    ----------after-------------

    ----------before-------------
    cry method is called
    ----------after-------------




    點我下載工程代碼
    posted on 2010-10-29 10:36 雪山飛鵠 閱讀(2633) 評論(0)  編輯  收藏 所屬分類: spring
    主站蜘蛛池模板: 1000部啪啪未满十八勿入免费| 亚洲国产精品18久久久久久 | 天天看免费高清影视| 亚洲人成在线中文字幕| 亚洲免费在线视频播放| 亚洲一区二区免费视频| 一本无码人妻在中文字幕免费 | 一本岛高清v不卡免费一三区| 亚洲一级黄色大片| 免费人成视频在线| 亚洲hairy多毛pics大全| 四虎永久精品免费观看| 一级**爱片免费视频| 亚洲日本一区二区三区在线| 成人爽a毛片免费| 亚洲视频中文字幕在线| 成人免费午夜无码视频| 另类小说亚洲色图| 亚洲综合色自拍一区| 日韩中文字幕免费视频| 亚洲AV男人的天堂在线观看| 亚洲国产精品日韩| 久久国产精品成人免费| 亚洲人成激情在线播放| 波多野结衣视频在线免费观看| jizz免费一区二区三区| 亚洲VA中文字幕无码毛片| h视频在线观看免费完整版| 亚洲高清毛片一区二区| 亚洲成片观看四虎永久| 午夜无码A级毛片免费视频| 亚洲熟女综合一区二区三区| 亚洲真人日本在线| 色老头永久免费网站| 在线观看免费亚洲| 久久青青草原亚洲AV无码麻豆| 免费看片免费播放| 久久国产免费一区二区三区| 亚洲乱色熟女一区二区三区蜜臀| 久久久久久A亚洲欧洲AV冫| 又黄又爽又成人免费视频|