日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Aop 切点表达式

發布時間:2025/3/17 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Aop 切点表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

???在Spring AOP?中,通常需要借助AspectJ?的切點表達式語言來定義切點。重要的是Spring?中僅支持AspectJ切點指示器的一個子集。

Spring?支持的AspectJ的切點指示器

AspectJ?指示器 描述
args() 限制連接點匹配參數為執行類型的執行方法
@args() 限制連接點匹配參數由執行注解標注的執行方法
execution() 匹配連接點的執行方法
this() 限制連接點匹配AOP代理的Bean引用類型為指定類型的Bean
target() 限制連接點匹配目標對象為指定類型的類
@target() 限制連接點匹配目標對象被指定的注解標注的類
within() 限制連接點匹配匹配指定的類型
@within() 限制連接點匹配指定注解標注的類型
@annotation 限制匹配帶有指定注解的連接點

?

Spring AOP?中常用的是:

Java代碼?

  • execution(modifiers-pattern??ret-type-pattern?declaring-type-pattern??name-pattern(param-pattern)??

  • ??????????throws-pattern?)??

  • execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)throws-pattern?)

    ?匹配所有

    ???????execution("* *.*(..)")

    匹配所有以set開頭的方法

    ????????execution("* *.set*(..))

    匹配指定包下所有的方法

    ????????execution("*?com.david.biz.service.impl.*(..))

    匹配指定包以及其子包下的所有方法

    ????????execution("* com.david..*(..)")

    匹配指定包以及其子包下?參數類型為String?的方法

    ????????execution("* com.david..*(java.lang.String))

    ?

    ?

    Java代碼?

  • <?xml?version="1.0"?encoding="UTF-8"?>??

  • <beans?xmlns="http://www.springframework.org/schema/beans"??

  • ????xmlns:p="http://www.springframework.org/schema/p"?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"??

  • ????xmlns:context="http://www.springframework.org/schema/context"?xmlns:tx="http://www.springframework.org/schema/tx"??

  • ????xmlns:aop="http://www.springframework.org/schema/aop"?xmlns:jee="http://www.springframework.org/schema/jee"??

  • ????xmlns:task="http://www.springframework.org/schema/task"??

  • ????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??

  • ????????http://www.springframework.org/schema/tx??

  • ????????http://www.springframework.org/schema/tx/spring-tx-3.0.xsd??

  • ????????http://www.springframework.org/schema/jee???

  • ????????http://www.springframework.org/schema/jee/spring-jee-3.0.xsd??

  • ????????http://www.springframework.org/schema/task????

  • ????????http://www.springframework.org/schema/task/spring-task-3.1.xsd????

  • ????????">??

  • ????<context:component-scan?base-package="com.david.*"/>??

  • ????<aop:aspectj-autoproxy?/>??

  • ????<context:property-placeholder?location="classpath:META-INF/config.properties"?/>??

  • ????<!--?定義數據源?-->??

  • ????<bean?id="dataSource"?class="com.mchange.v2.c3p0.ComboPooledDataSource"??

  • ????????destroy-method="close">??

  • ????????<property?name="driverClass"?value="${jdbc.ams.driver}"?/>??

  • ????????<property?name="jdbcUrl"?value="${jdbc.ams.url}"?/>??

  • ????????<property?name="user"?value="${jdbc.ams.username}"?/>??

  • ????????<property?name="password"?value="${jdbc.ams.password}"?/>??

  • ????????<property?name="initialPoolSize"?value="${initialSize}"?/>??

  • ????????<property?name="minPoolSize"?value="${minPoolSize}"?/>??

  • ????????<property?name="maxPoolSize"?value="${maxActive}"?/>??

  • ????????<property?name="acquireIncrement"?value="${acquireIncrement}"?/>??

  • ????????<property?name="maxIdleTime"?value="${maxIdleTime}"?/>??

  • ????</bean>??

  • ??

  • ????<!--?定義jdbc模板類?-->??

  • ????<bean?id="jdbcTemplate"?class="org.springframework.jdbc.core.JdbcTemplate">??

  • ????????<property?name="dataSource"?ref="dataSource"?/>??

  • ????</bean>??

  • ??

  • ????<bean?id="sqlMapClient"?class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">??

  • ????????<property?name="dataSource"?ref="dataSource"?/>??

  • ????????<property?name="configLocation"?value="classpath:META-INF/sqlmap/sqlmap.xml"?/>??

  • ????</bean>??

  • ??

  • ????<tx:advice?id="txAdvice"?transaction-manager="transactionManager">??

  • ????????<tx:attributes>??

  • ????????????<tx:method?name="addBook"?propagation="REQUIRED"?/>??

  • ????????????<tx:method?name="addUserBook"?propagation="MANDATORY"?/>??

  • ????????????<tx:method?name="deleteBook"?propagation="REQUIRES_NEW"?/>??

  • ????????????<tx:method?name="addNewBook"?propagation="NEVER"?/>??

  • ????????????<tx:method?name="addUser"?propagation="NESTED"?/>??

  • ????????</tx:attributes>??

  • ????</tx:advice>??

  • ????<bean?id="transactionManager"??

  • ????????class="org.springframework.jdbc.datasource.DataSourceTransactionManager">??

  • ????????<property?name="dataSource"?ref="dataSource"?/>??

  • ????</bean>??

  • ??????

  • </beans>??

  • <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:jee="http://www.springframework.org/schema/jee"xmlns:task="http://www.springframework.org/schema/task"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd "><context:component-scan base-package="com.david.*"/><aop:aspectj-autoproxy /><context:property-placeholder location="classpath:META-INF/config.properties" /><!-- 定義數據源 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close"><property name="driverClass" value="${jdbc.ams.driver}" /><property name="jdbcUrl" value="${jdbc.ams.url}" /><property name="user" value="${jdbc.ams.username}" /><property name="password" value="${jdbc.ams.password}" /><property name="initialPoolSize" value="${initialSize}" /><property name="minPoolSize" value="${minPoolSize}" /><property name="maxPoolSize" value="${maxActive}" /><property name="acquireIncrement" value="${acquireIncrement}" /><property name="maxIdleTime" value="${maxIdleTime}" /></bean><!-- 定義jdbc模板類 --><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource" /></bean><bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"><property name="dataSource" ref="dataSource" /><property name="configLocation" value="classpath:META-INF/sqlmap/sqlmap.xml" /></bean><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="addBook" propagation="REQUIRED" /><tx:method name="addUserBook" propagation="MANDATORY" /><tx:method name="deleteBook" propagation="REQUIRES_NEW" /><tx:method name="addNewBook" propagation="NEVER" /><tx:method name="addUser" propagation="NESTED" /></tx:attributes></tx:advice><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean></beans>

    ?

    ?

    Java代碼?

  • @Service("bookService")??

  • public?class?BookServiceImpl?implements?BookService?{??

  • ??

  • ????private?static?final?Logger?logger??????=?LogManager.getLogger(BookServiceImpl.class);??

  • ????public?static?final?String??ADD_BOOK????=?"insert?into?t_book(id,name)?values(1,'duck-j2ee')";??

  • ??

  • ????public?static?final?String??DELETE_BOOK?=?"delete?from??t_book?where?id=1";??

  • ??

  • ????private?JdbcTemplate????????jdbcTemplate;??

  • ????@Autowired??

  • ????private?BookDao?????????????bookDao;??

  • ??

  • ????public?void?addBook()?throws?Exception?{??

  • ????????Book?book?=?new?Book();??

  • ????????book.setName("ibatis");??

  • ????????book.setPrice(11);??

  • ????????bookDao.insert(book);??

  • ????????throw?new?UnRollbackException("受檢查異常,不會回滾");??

  • ????}??

  • ??

  • ????public?void?deleteBook(int?id)?{??

  • ????????try?{??

  • ????????????bookDao.deleteById(id);??

  • ????????}?catch?(SQLException?e)?{??

  • ????????????logger.error("",?e);??

  • ????????}??

  • ????}??

  • ??

  • ????@LoggingRequired??

  • ????public?void?addNewBook(String?name,?int?price)?{??

  • ????????try?{??

  • ????????????Book?book?=?new?Book();??

  • ????????????book.setName(name);??

  • ????????????book.setPrice(price);??

  • ????????????bookDao.insert(book);??

  • ????????????List<Book>?lists?=?bookDao.selectAll();??

  • ????????????System.out.println(lists);??

  • ????????}?catch?(SQLException?e)?{??

  • ????????????logger.error("",?e);??

  • ????????}??

  • ????}??

  • ??

  • ????public?void?addUserBook()?{??

  • ????????jdbcTemplate.execute("insert?into?t_book(id,name)?values(3,'UserBook')");??

  • ????}??

  • ??

  • ????/**?

  • ?????*?Setter?method?for?property?<tt>jdbcTemplate</tt>.?

  • ?????*?

  • ?????*?@param?jdbcTemplate?value?to?be?assigned?to?property?jdbcTemplate?

  • ?????*/??

  • ????public?void?setJdbcTemplate(JdbcTemplate?jdbcTemplate)?{??

  • ????????this.jdbcTemplate?=?jdbcTemplate;??

  • ????}??

  • ??

  • ????/**?

  • ?????*?@see?com.david.biz.service.BookService#queryAll()?

  • ?????*/??

  • ????public?List<Book>?queryAll()?{??

  • ????????try?{??

  • ????????????return?bookDao.selectAll();??

  • ????????}?catch?(SQLException?e)?{??

  • ????????????logger.error("",?e);??

  • ????????}??

  • ????????return?null;??

  • ????}??

  • ??

  • }??

  • @Service("bookService") public class BookServiceImpl implements BookService {private static final Logger logger = LogManager.getLogger(BookServiceImpl.class);public static final String ADD_BOOK = "insert into t_book(id,name) values(1,'duck-j2ee')";public static final String DELETE_BOOK = "delete from t_book where id=1";private JdbcTemplate jdbcTemplate;@Autowiredprivate BookDao bookDao;public void addBook() throws Exception {Book book = new Book();book.setName("ibatis");book.setPrice(11);bookDao.insert(book);throw new UnRollbackException("受檢查異常,不會回滾");}public void deleteBook(int id) {try {bookDao.deleteById(id);} catch (SQLException e) {logger.error("", e);}}@LoggingRequiredpublic void addNewBook(String name, int price) {try {Book book = new Book();book.setName(name);book.setPrice(price);bookDao.insert(book);List<Book> lists = bookDao.selectAll();System.out.println(lists);} catch (SQLException e) {logger.error("", e);}}public void addUserBook() {jdbcTemplate.execute("insert into t_book(id,name) values(3,'UserBook')");}/*** Setter method for property <tt>jdbcTemplate</tt>.** @param jdbcTemplate value to be assigned to property jdbcTemplate*/public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}/*** @see com.david.biz.service.BookService#queryAll()*/public List<Book> queryAll() {try {return bookDao.selectAll();} catch (SQLException e) {logger.error("", e);}return null;}}

    ?

    ?

    Java代碼?

  • /**?

  • ?*?execution(modifiers-pattern??ret-type-pattern?declaring-type-pattern??name-pattern(param-pattern)?

  • ??????????throws-pattern?)?

  • ?*arg()??限制連接點匹配參數為指定類型的執行方法?

  • ?*@args()?限制連接點匹配參數由執行注解標注的執行?

  • ?*execution()?用于匹配連接點的執行方法?

  • ?*this()?限制連接點匹配AOP代理的Bean引用為執行類型的類?

  • ?*target()?限制連接點匹配目標對象為指定類型的類?

  • ?*@target()?限制連接點匹配特定的執行對象,這些對象應具備指定的注解類型?

  • ?*@annotation()限制匹配帶有指定注解的連接點?

  • ?*?

  • ?*?

  • ?*?

  • ?*?@author?zhangwei_david?

  • ?*?@version?$Id:?LogAspect.java,?v?0.1?2014年11月29日?下午1:10:13?zhangwei_david?Exp?$?

  • ?*/??

  • @Component??

  • @Aspect??

  • public?class?LogAspect?{??

  • ????private?static?final?Logger?logger?=?LogManager.getLogger(LogAspect.class);??

  • ??

  • ????/**?

  • ?????*?匹配參數是任何類型,任何數量?且在com,david.biz包或子包下的方法?

  • ?????*/??

  • ????@Pointcut("args(..)&&within(com.david.biz..*)")??

  • ????public?void?arg()?{??

  • ??

  • ????}??

  • ??

  • ????@Pointcut("@args(com.david.aop.LoggingRequired)")??

  • ????public?void?annotationArgs()?{??

  • ??

  • ????}??

  • ??

  • ????@Pointcut("@annotation(com.david.aop.LoggingRequired)")??

  • ????public?void?logRequiredPointcut()?{??

  • ??

  • ????}??

  • ??

  • ????@Pointcut("args(java.lang.String,*)")??

  • ????public?void?argsWithString()?{??

  • ??

  • ????}??

  • ??

  • ????@Pointcut("target(com.david.biz.service.impl.BookServiceImpl)")??

  • ????public?void?targetPointcut()?{??

  • ??

  • ????}??

  • ??

  • ????@Pointcut("@target(org.springframework.stereotype.Service)")??

  • ????public?void?targetAnnotation()?{??

  • ??

  • ????}??

  • ??

  • ????//????@Around("execution(*?org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(..))")??

  • ????//????public?Object?aa(ProceedingJoinPoint?pjp)?throws?Throwable?{??

  • ????//????????try?{??

  • ????//????????????Object?retVal?=?pjp.proceed();??

  • ????//????????????System.out.println(retVal);??

  • ????//????????????return?retVal;??

  • ????//????????}?catch?(Exception?e)?{??

  • ????//????????????System.out.println("異常");??

  • ????//????????????return?null;??

  • ????//????????}??

  • ????//????}??

  • ????@Before(value?=?"logRequiredPointcut()")??

  • ????public?void?before(JoinPoint?joinPoint)?{??

  • ????????LogUtils.info(logger,??

  • ????????????"?連接點表達式@annotation(com.david.aop.LoggingRequired)?-?method={0}?has?been?visited",??

  • ????????????joinPoint.getSignature().getName());??

  • ????}??

  • ??

  • ????@Before(value?=?"arg()")??

  • ????public?void?beforeArg(JoinPoint?joinPoint)?{??

  • ????????LogUtils.info(logger,??

  • ????????????"連接點表達式:args(..)&&within(com.david.biz..*)??method?={0},?args?={1},target={2}",??

  • ????????????joinPoint.getSignature().getName(),?ToStringBuilder.reflectionToString(??

  • ????????????????joinPoint.getArgs(),?ToStringStyle.SHORT_PREFIX_STYLE),?joinPoint.getTarget()??

  • ????????????????.getClass().getName());??

  • ????}??

  • ??

  • ????@Before(value?=?"argsWithString()")??

  • ????public?void?beforeArgWithString(JoinPoint?joinPoint)?{??

  • ????????LogUtils.info(logger,?"連接點表達式:args(java.lang.String,*)??method={0}?,args?={1},target={2}",??

  • ????????????joinPoint.getSignature().getName(),?ToStringBuilder.reflectionToString(??

  • ????????????????joinPoint.getArgs(),?ToStringStyle.SHORT_PREFIX_STYLE),?joinPoint.getTarget()??

  • ????????????????.getClass().getName());??

  • ????}??

  • ??

  • ????@Before(value?=?"annotationArgs()")??

  • ????public?void?beforeAnnotationArgs(JoinPoint?joinPoint)?{??

  • ????????LogUtils??

  • ????????????.info(??

  • ????????????????logger,??

  • ????????????????"連接點表達式:@args(com.david.annotation.validate.Length,*)??method={0}?,args?={1},target={2}",??

  • ????????????????joinPoint.getSignature().getName(),?ToStringBuilder.reflectionToString(??

  • ????????????????????joinPoint.getArgs(),?ToStringStyle.SHORT_PREFIX_STYLE),?joinPoint.getTarget()??

  • ????????????????????.getClass().getName());??

  • ????}??

  • ??

  • ????@Before(value?=?"targetPointcut()")??

  • ????public?void?beforeTarget(JoinPoint?joinPoint)?{??

  • ????????LogUtils??

  • ????????.info(??

  • ????????????logger,??

  • ????????????"連接點表達式:target(com.david.biz.service.impl.BookServiceImpl)??method={0}?,args?={1},target={2}",??

  • ????????????joinPoint.getSignature().getName(),?ToStringBuilder.reflectionToString(??

  • ????????????????joinPoint.getArgs(),?ToStringStyle.SHORT_PREFIX_STYLE),?joinPoint.getTarget()??

  • ????????????????.getClass().getName());??

  • ????}??

  • ??

  • ????@Before(value?=?"?targetAnnotation()")??

  • ????public?void?beforeTargetAnnotation(JoinPoint?joinPoint)?{??

  • ????????LogUtils??

  • ????????????.info(??

  • ????????????????logger,??

  • ????????????????"連接點表達式:@target(org.springframework.stereotype.Service)??method={0}?,args?={1},target={2}",??

  • ????????????????joinPoint.getSignature().getName(),?ToStringBuilder.reflectionToString(??

  • ????????????????????joinPoint.getArgs(),?ToStringStyle.SHORT_PREFIX_STYLE),?joinPoint.getTarget()??

  • ????????????????????.getClass().getName());??

  • ????}??

  • }??

  • /*** execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)throws-pattern?)*arg() 限制連接點匹配參數為指定類型的執行方法*@args() 限制連接點匹配參數由執行注解標注的執行*execution() 用于匹配連接點的執行方法*this() 限制連接點匹配AOP代理的Bean引用為執行類型的類*target() 限制連接點匹配目標對象為指定類型的類*@target() 限制連接點匹配特定的執行對象,這些對象應具備指定的注解類型*@annotation()限制匹配帶有指定注解的連接點**** @author zhangwei_david* @version $Id: LogAspect.java, v 0.1 2014年11月29日 下午1:10:13 zhangwei_david Exp $*/ @Component @Aspect public class LogAspect {private static final Logger logger = LogManager.getLogger(LogAspect.class);/*** 匹配參數是任何類型,任何數量 且在com,david.biz包或子包下的方法*/@Pointcut("args(..)&&within(com.david.biz..*)")public void arg() {}@Pointcut("@args(com.david.aop.LoggingRequired)")public void annotationArgs() {}@Pointcut("@annotation(com.david.aop.LoggingRequired)")public void logRequiredPointcut() {}@Pointcut("args(java.lang.String,*)")public void argsWithString() {}@Pointcut("target(com.david.biz.service.impl.BookServiceImpl)")public void targetPointcut() {}@Pointcut("@target(org.springframework.stereotype.Service)")public void targetAnnotation() {}// @Around("execution(* org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(..))")// public Object aa(ProceedingJoinPoint pjp) throws Throwable {// try {// Object retVal = pjp.proceed();// System.out.println(retVal);// return retVal;// } catch (Exception e) {// System.out.println("異常");// return null;// }// }@Before(value = "logRequiredPointcut()")public void before(JoinPoint joinPoint) {LogUtils.info(logger," 連接點表達式@annotation(com.david.aop.LoggingRequired) - method={0} has been visited",joinPoint.getSignature().getName());}@Before(value = "arg()")public void beforeArg(JoinPoint joinPoint) {LogUtils.info(logger,"連接點表達式:args(..)&&within(com.david.biz..*) method ={0}, args ={1},target={2}",joinPoint.getSignature().getName(), ToStringBuilder.reflectionToString(joinPoint.getArgs(), ToStringStyle.SHORT_PREFIX_STYLE), joinPoint.getTarget().getClass().getName());}@Before(value = "argsWithString()")public void beforeArgWithString(JoinPoint joinPoint) {LogUtils.info(logger, "連接點表達式:args(java.lang.String,*) method={0} ,args ={1},target={2}",joinPoint.getSignature().getName(), ToStringBuilder.reflectionToString(joinPoint.getArgs(), ToStringStyle.SHORT_PREFIX_STYLE), joinPoint.getTarget().getClass().getName());}@Before(value = "annotationArgs()")public void beforeAnnotationArgs(JoinPoint joinPoint) {LogUtils.info(logger,"連接點表達式:@args(com.david.annotation.validate.Length,*) method={0} ,args ={1},target={2}",joinPoint.getSignature().getName(), ToStringBuilder.reflectionToString(joinPoint.getArgs(), ToStringStyle.SHORT_PREFIX_STYLE), joinPoint.getTarget().getClass().getName());}@Before(value = "targetPointcut()")public void beforeTarget(JoinPoint joinPoint) {LogUtils.info(logger,"連接點表達式:target(com.david.biz.service.impl.BookServiceImpl) method={0} ,args ={1},target={2}",joinPoint.getSignature().getName(), ToStringBuilder.reflectionToString(joinPoint.getArgs(), ToStringStyle.SHORT_PREFIX_STYLE), joinPoint.getTarget().getClass().getName());}@Before(value = " targetAnnotation()")public void beforeTargetAnnotation(JoinPoint joinPoint) {LogUtils.info(logger,"連接點表達式:@target(org.springframework.stereotype.Service) method={0} ,args ={1},target={2}",joinPoint.getSignature().getName(), ToStringBuilder.reflectionToString(joinPoint.getArgs(), ToStringStyle.SHORT_PREFIX_STYLE), joinPoint.getTarget().getClass().getName());} }

    ?

    Java代碼?

  • /**?

  • ?*?

  • ?*?@author?zhangwei_david?

  • ?*?@version?$Id:?T.java,?v?0.1?2014年12月1日?上午9:35:44?zhangwei_david?Exp?$?

  • ?*/??

  • @RunWith(SpringJUnit4Cla***unner.class)??

  • @ContextConfiguration(locations?=?"file:H:/workspace4study/WebApp/src/main/webapp/WEB-INF/applicationContext.xml")??

  • public?class?BookServiceTest?{??

  • ??

  • ????@Autowired??

  • ????private?BookService?bookService;??

  • ??

  • ????@Test??

  • ????public?void?testB()?{??

  • ????????bookService.addNewBook("Junit??Test",?1000);??

  • ????}??

  • ??

  • }??

  • /**** @author zhangwei_david* @version $Id: T.java, v 0.1 2014年12月1日 上午9:35:44 zhangwei_david Exp $*/ @RunWith(SpringJUnit4Cla***unner.class) @ContextConfiguration(locations = "file:H:/workspace4study/WebApp/src/main/webapp/WEB-INF/applicationContext.xml") public class BookServiceTest {@Autowiredprivate BookService bookService;@Testpublic void testB() {bookService.addNewBook("Junit Test", 1000);}}

    ?

    ?

    Java代碼?

  • 2014-12-01?11:14:39??[?main:1577?]?-?[?INFO?]???連接點表達式@annotation(com.david.aop.LoggingRequired)?-?method=addNewBook?has?been?visited??

  • 2014-12-01?11:14:39??[?main:1587?]?-?[?INFO?]??連接點表達式:args(..)&&within(com.david.biz..*)??method?=addNewBook,?args?=Object[][{Junit??Test,1000}],target=com.david.biz.service.impl.BookServiceImpl??

  • 2014-12-01?11:14:39??[?main:1588?]?-?[?INFO?]??連接點表達式:args(java.lang.String,*)??method=addNewBook?,args?=Object[][{Junit??Test,1000}],target=com.david.biz.service.impl.BookServiceImpl??

  • 2014-12-01?11:14:39??[?main:1588?]?-?[?INFO?]??連接點表達式:target(com.david.biz.service.impl.BookServiceImpl)??method=addNewBook?,args?=Object[][{Junit??Test,1000}],target=com.david.biz.service.impl.BookServiceImpl??

  • 2014-12-01?11:14:39??[?main:1589?]?-?[?INFO?]??連接點表達式:@target(org.springframework.stereotype.Service)??method=addNewBook?,args?=Object[][{Junit??Test,1000}],target=com.david.biz.service.impl.BookServiceImpl??

  • 2014-12-01?11:14:39??[?main:1589?]?-?[?INFO?]??連接點表達式:args(..)&&within(com.david.biz..*)??method?=insert,?args?=Object[][{Book[id=0,name=Junit??Test,price=1000]}],target=com.david.biz.dao.impl.BookDaoImpl??

  • 2014-12-01?11:14:39??[?main:1590?]?-?[?INFO?]??連接點表達式:@args(com.david.annotation.validate.Length,*)??method=insert?,args?=Object[][{Book[id=0,name=Junit??Test,price=1000]}],target=com.david.biz.dao.impl.BookDaoImpl??

  • 2014-12-01?11:14:39??[?main:1591?]?-?[?INFO?]??連接點表達式:args(java.lang.String,*)??method=insert?,args?=Object[][{demo.insert,Book[id=0,name=Junit??Test,price=1000]}],target=com.ibatis.sqlmap.engine.impl.SqlMapClientImpl??

  • 2014-12-01 11:14:39 [ main:1577 ] - [ INFO ] 連接點表達式@annotation(com.david.aop.LoggingRequired) - method=addNewBook has been visited 2014-12-01 11:14:39 [ main:1587 ] - [ INFO ] 連接點表達式:args(..)&&within(com.david.biz..*) method =addNewBook, args =Object[][{Junit Test,1000}],target=com.david.biz.service.impl.BookServiceImpl 2014-12-01 11:14:39 [ main:1588 ] - [ INFO ] 連接點表達式:args(java.lang.String,*) method=addNewBook ,args =Object[][{Junit Test,1000}],target=com.david.biz.service.impl.BookServiceImpl 2014-12-01 11:14:39 [ main:1588 ] - [ INFO ] 連接點表達式:target(com.david.biz.service.impl.BookServiceImpl) method=addNewBook ,args =Object[][{Junit Test,1000}],target=com.david.biz.service.impl.BookServiceImpl 2014-12-01 11:14:39 [ main:1589 ] - [ INFO ] 連接點表達式:@target(org.springframework.stereotype.Service) method=addNewBook ,args =Object[][{Junit Test,1000}],target=com.david.biz.service.impl.BookServiceImpl 2014-12-01 11:14:39 [ main:1589 ] - [ INFO ] 連接點表達式:args(..)&&within(com.david.biz..*) method =insert, args =Object[][{Book[id=0,name=Junit Test,price=1000]}],target=com.david.biz.dao.impl.BookDaoImpl 2014-12-01 11:14:39 [ main:1590 ] - [ INFO ] 連接點表達式:@args(com.david.annotation.validate.Length,*) method=insert ,args =Object[][{Book[id=0,name=Junit Test,price=1000]}],target=com.david.biz.dao.impl.BookDaoImpl 2014-12-01 11:14:39 [ main:1591 ] - [ INFO ] 連接點表達式:args(java.lang.String,*) method=insert ,args =Object[][{demo.insert,Book[id=0,name=Junit Test,price=1000]}],target=com.ibatis.sqlmap.engine.impl.SqlMapClientImpl

    ?

    ?

    萌萌的IT人

    轉載于:https://blog.51cto.com/jlins/1585172

    總結

    以上是生活随笔為你收集整理的Spring Aop 切点表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。