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

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

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

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

    雪山飛鵠

    溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://www.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
    主站蜘蛛池模板: a毛片久久免费观看| 麻豆一区二区三区蜜桃免费| 可以免费观看的毛片| 亚洲精品国产美女久久久| 中文在线观看永久免费| 国产亚洲精品观看91在线| 中文字幕手机在线免费看电影| 亚洲中文字幕在线乱码| 在线观看人成视频免费无遮挡 | 皇色在线视频免费网站| 亚洲婷婷在线视频| 免费无码肉片在线观看| 亚洲色欲色欱wwW在线| 国产成人精品免费视频大全五级 | 一级做a免费视频观看网站| 亚洲精品国产精品乱码不卞| 国产黄色免费观看| 久久亚洲精品成人| 91黑丝国产线观看免费| 国产偷国产偷亚洲清高APP| 亚洲高清无码综合性爱视频| 成人A毛片免费观看网站| 久久精品国产亚洲AV麻豆网站 | 久久精品亚洲综合| 美女视频黄免费亚洲| 在线观看亚洲专区| 亚洲尤码不卡AV麻豆| 久热中文字幕在线精品免费| 亚洲精品国产suv一区88| 久久影院亚洲一区| 国产成人精品免费视频动漫| 国内成人精品亚洲日本语音| 亚洲精品成人无限看| 丁香花在线观看免费观看| a级毛片免费高清视频| 亚洲精品视频在线观看免费| 午夜免费福利影院| 在线观看免费播放av片| 亚洲综合在线一区二区三区| 亚洲午夜久久久久久久久久 | 国产婷婷成人久久Av免费高清 |