<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
    主站蜘蛛池模板: 亚洲色欲久久久综合网东京热| 一区二区三区四区免费视频 | a在线视频免费观看| 亚洲av高清在线观看一区二区 | 蜜桃精品免费久久久久影院| 亚洲午夜精品在线| 黄瓜视频影院在线观看免费| 337p日本欧洲亚洲大胆精品555588 | 伊人免费在线观看| 亚洲国产精品无码久久久秋霞2| 中文字幕乱理片免费完整的| 久久精品国产亚洲一区二区| 久热免费在线视频| 噜噜噜亚洲色成人网站∨| 美丽的姑娘免费观看在线播放| 亚洲AV乱码久久精品蜜桃| 1000部啪啪未满十八勿入免费| 亚洲综合日韩中文字幕v在线 | 亚洲国产中文在线视频| 在线观看视频免费完整版 | 中文无码日韩欧免费视频| 久久亚洲精品成人777大小说| 一级毛片免费不卡在线| 亚洲人成7777影视在线观看| 毛片a级毛片免费播放下载| MM1313亚洲国产精品| 不卡精品国产_亚洲人成在线| 久久午夜无码免费| 亚洲AV综合色区无码二区爱AV| 国产成人免费a在线视频app| aaa毛片免费观看| 亚洲制服在线观看| 免费在线观看黄网| 免费成人在线电影| 亚洲va久久久久| 中文字幕不卡亚洲 | 国产中文字幕免费观看| 久久嫩草影院免费看夜色| 亚洲视频免费一区| 午夜国产大片免费观看| 久久伊人免费视频|