- 浏览: 167729 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (212)
- Java基础 (67)
- Js基础 (14)
- NoSQL (7)
- Spring (34)
- sql (8)
- JMS (1)
- Redis (8)
- Flex (5)
- java线程 (2)
- Linux (8)
- Hibernate (3)
- maven (12)
- bug (1)
- node.js (3)
- servlet (7)
- 设计模式 (6)
- struts (1)
- bootstrap3.js (2)
- cxf (1)
- Thymeleaf (2)
- HTML (1)
- parsley.js (1)
- jquery (1)
- restful (4)
- eclipse&Idea (3)
- Spring boot (2)
- Http (1)
- DB (3)
- Jboss (1)
- web (1)
- rpc (3)
- zookeeper (1)
- 杂谈 (4)
- angularjs (2)
- selenium2.0 (1)
- Mybatis (6)
- MySql (7)
- 数据结构 (1)
- Nginx (2)
最新评论
-
wangyudong:
由Spring Boot实现的微服务需要有比较好的工具去测试R ...
spring boot 启动 -
arsemilan:
很实用的sql,面试必备
sql 简单应用
package com.spring.aop.service;
public interface UserService {
void save(String name);
void save();
}
package com.spring.aop.service.impl;
import org.springframework.stereotype.Service;
import com.spring.aop.service.UserService;
@Service
public class UserServiceBean implements UserService {
@Override
public void save(String name) {
System.out.println("UserService 正在保存"+name);
}
@Override
public void save() {
System.out.println("UserService 正在保存。。。空参数");
}
}
package com.spring.aop.interceptor;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
@Aspect
public class MyInterceptor {
@Pointcut("execution(* com.spring.aop.service..*(..)) ")
private void anyMethod(){};
@Before("anyMethod()")
public void beforeLog(){
System.out.println("method do before log...");
}
@After("anyMethod()")
public void afterLog(){
System.out.println("method do after log...");
}
//方法执行的前后调用
@Around("anyMethod()")
public Object around(ProceedingJoinPoint point) throws Throwable{
System.out.println("begin around");
Object object = point.proceed();
System.out.println("end around");
return object;
}
}
package com.spring.aop.test;
import static org.junit.Assert.*;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.spring.aop.interceptor.MyInterceptor;
import com.spring.aop.service.UserService;
public class InterceptorTest {
@Autowired
private UserService userService;
@Test
public void test() {
fail("Not yet implemented");
}
@Test
public void interceptorTest(){
ApplicationContext cxt = new ClassPathXmlApplicationContext("beans.xml");
UserService service = (UserService)cxt.getBean("userService");
userService.save();
}
}
beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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">
<aop:aspectj-autoproxy/>
<bean id="myInterceptor" class="com.spring.aop.interceptor.MyInterceptor"></bean>
<bean id="userService" class="com.spring.aop.service.impl.UserServiceBean"></bean>
</beans>
public interface UserService {
void save(String name);
void save();
}
package com.spring.aop.service.impl;
import org.springframework.stereotype.Service;
import com.spring.aop.service.UserService;
@Service
public class UserServiceBean implements UserService {
@Override
public void save(String name) {
System.out.println("UserService 正在保存"+name);
}
@Override
public void save() {
System.out.println("UserService 正在保存。。。空参数");
}
}
package com.spring.aop.interceptor;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
@Aspect
public class MyInterceptor {
@Pointcut("execution(* com.spring.aop.service..*(..)) ")
private void anyMethod(){};
@Before("anyMethod()")
public void beforeLog(){
System.out.println("method do before log...");
}
@After("anyMethod()")
public void afterLog(){
System.out.println("method do after log...");
}
//方法执行的前后调用
@Around("anyMethod()")
public Object around(ProceedingJoinPoint point) throws Throwable{
System.out.println("begin around");
Object object = point.proceed();
System.out.println("end around");
return object;
}
}
package com.spring.aop.test;
import static org.junit.Assert.*;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.spring.aop.interceptor.MyInterceptor;
import com.spring.aop.service.UserService;
public class InterceptorTest {
@Autowired
private UserService userService;
@Test
public void test() {
fail("Not yet implemented");
}
@Test
public void interceptorTest(){
ApplicationContext cxt = new ClassPathXmlApplicationContext("beans.xml");
UserService service = (UserService)cxt.getBean("userService");
userService.save();
}
}
beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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">
<aop:aspectj-autoproxy/>
<bean id="myInterceptor" class="com.spring.aop.interceptor.MyInterceptor"></bean>
<bean id="userService" class="com.spring.aop.service.impl.UserServiceBean"></bean>
</beans>
发表评论
-
spring+quartz
2015-08-17 17:51 7241.pom.xml <dependency> ... -
[转]org.springframework.web.util.IntrospectorCleanupListener作用
2015-07-14 18:11 992spring中提供了一个名为org.springframew ... -
spring redis
2015-06-13 16:43 84701.pom.xml <!-- spring-d ... -
Spring Transaction 分析事务属性
2015-05-12 17:15 441众所周知的ACID属性: 原子性(atomicity)、一 ... -
BCryptPasswordEncoder
2015-04-15 17:17 3571import org.springframework.se ... -
spring Integration
2015-03-25 11:09 1563<beans xmlns="http://w ... -
Spring DateFormatter &&CurrencyFormatter
2015-03-09 17:57 5021.DateFormatter java.util ... -
spring Interceptor小应用
2015-02-11 15:54 373性能监控 如记录一下请求的处理时间,得到一些慢请求(如处理 ... -
Spring3中的mvc:interceptors标签配置拦截器/spring boot HandlerInterceptor
2015-02-11 14:47 825<?xml version="1.0&quo ... -
Spring Annotation (3)
2015-02-09 19:50 5581.类内部的注解,如:@Autowire、@Value、@R ... -
Spring Annotation (2)
2015-02-09 19:47 4751.从Spring2.0以后的版本中,Spring也引入了基 ... -
Spring Annotation (1)
2015-02-09 19:45 3611.使用 @Repository、@Service、@Con ... -
Java的注解机制——Spring自动装配的实现原理
2015-02-05 19:51 468jDK1.5加入了对注解机 ... -
saveAndFlush and save
2015-01-23 18:56 1136On saveAndFlush, changes will ... -
SpringMVC中JSP取不到ModelAndView的数据原因
2015-01-23 10:17 876在项目中发现用JSP取不到ModelAndView的数据, ... -
spring 小知识
2015-01-21 15:06 3311.处理器映射DefaultAnnotationHa ... -
Spring MVC 流程图
2015-01-20 16:03 766Spring工作流程描述 1. ... -
Spring Scope
2014-12-08 10:42 297详细参考:http://blog.csd ... -
Jpa-JpaRepository
2014-12-04 16:06 5881.查询自定义的dto @Query(nativeQu ... -
spring web put与delete方法的调用
2014-11-24 15:01 1338在form中,method只用GET/POST。如果 ...
相关推荐
Java AOP(面向切面编程)、IOC(控制反转)和注解是Java开发中的核心概念,尤其在Spring框架中被广泛应用。本实例Demo将深入探讨这三个主题,通过具体代码示例帮助理解它们的工作原理和实际用途。 AOP,即面向切面...
首先,我们来看看SpringBoot AOP中的各种注解。最基础的是`@Aspect`,用于标记一个类为切面类,这个类中会包含切点(Pointcut)和通知(Advice)。切点定义了代码执行的特定位置,比如方法的执行,而通知则是在这些...
基于Spring boot + maven,以注解+AOP方式实现的java后端项目接口参数校验框架。迄今为止使用最简单、最容易理解的参数校验方案。博客地址:https://blog.csdn.net/weixin_42686388/article/details/104009771
Java AOP(面向切面编程)是一种编程范式,它允许程序员定义“切面”,这些切面封装了特定关注点的代码,如日志、事务管理、权限检查等。这样可以将这些关注点与核心业务逻辑分离,提高代码的可读性和可维护性。在...
3、对spring aop认识模糊的,不清楚如何实现Java 自定义注解的 4、想看spring aop 注解实现记录系统日志并入库等 二、能学到什么 1、收获可用源码 2、能够清楚的知道如何用spring aop实现自定义注解以及注解的逻辑...
Java AOP(面向切面编程)是软件设计中的一个重要概念,它允许程序员定义“切面”,这些切面封装了特定的、与业务逻辑不直接相关的关注点,如日志、事务管理、性能监控等。AOP的核心思想是将横切关注点从核心业务...
在Spring AOP中,我们可以利用注解来实现切面,使得代码更加简洁、易读。本篇文章将深入探讨如何使用注解方式在Spring AOP中实现内部方法的拦截。 首先,理解AOP的基本概念至关重要。AOP的核心是切面(Aspect),它...
Java Spring AOP(面向切面编程)是一种强大的设计模式,它允许程序员在不修改源代码的情况下,通过插入切面来增强或修改已有代码的行为。在Spring框架中,AOP主要用于日志记录、性能监控、事务管理等场景。下面将...
在Spring框架中,AOP(面向切面编程)是一...Spring AOP注解的应用使得切面编程更加简单直观,大大简化了对横切关注点的管理。在实际开发中,结合Spring提供的其他特性,如事务管理,可以构建出高效、健壮的后端系统。
AspectJ是Java编程语言的一个重要扩展,它引入了面向切面编程(AOP)的概念,使得开发者能够更方便地处理横切关注点,如日志、事务管理、权限检查等。面向切面编程是一种编程范式,旨在提高软件的模块化程度,将核心...
总结起来,Spring AOP注解版通过简单易懂的注解,使得面向切面编程变得更加直观和方便。它降低了横切关注点与业务逻辑之间的耦合度,提高了代码的可维护性和复用性。通过合理利用这些注解,开发者可以轻松地实现日志...
要启用注解驱动的 AOP,需要在 Spring 配置文件中添加 `<aop:aspectj-autoproxy>` 标签,或者在 Java 配置类中使用 `@EnableAspectJAutoProxy` 注解。 6. **运行环境** 由于这是一个简单的例子,因此运行环境的...
以上就是关于“Java Spring AOP 事务+注释”的详细解释,涵盖了Spring AOP的基本概念、事务管理机制以及`@Transactional`注解的使用。通过这些知识,我们可以更好地理解并实践Spring框架中的事务处理。
下面将详细介绍Spring AOP的注解方式和XML配置方式。 ### 注解方式 #### 1. 定义切面(Aspect) 在Spring AOP中,切面是包含多个通知(advisors)的类。使用`@Aspect`注解标记切面类,例如: ```java @Aspect ...
基于注解实现SpringAop基于注解实现SpringAop基于注解实现SpringAop
在Spring AOP中,注解配置是一种简洁且直观的使用方式,它极大地简化了配置过程,避免了XML配置的繁琐。以下是使用注解配置Spring AOP的关键知识点: 1. **切面(Aspect)**:切面是AOP的核心概念,它封装了多个...
AOP(Aspect Oriented Programming,面向切面编程)是Java编程领域中的一种设计模式,它扩展了传统的面向对象编程,允许程序员定义“方面”,这些方面可以包含关注点,如日志、事务管理、性能监控等,这些关注点通常...
Java AOP(面向切面编程)是一种编程范式,它允许程序员定义“切面”,这些切面封装了特定关注点的代码,如日志、事务管理或安全性,从而提高代码的可重用性和模块化。在Java中,Spring框架提供了对AOP的强大支持。 ...
5. **@EnableAspectJAutoProxy**: 在Spring配置类上添加此注解,启用基于Java代理的AOP支持,这样Spring会自动检测并处理带有@Aspect注解的类。 ```java @Configuration @EnableAspectJAutoProxy public class ...
总的来说,Spring的AOP注解使得切面编程变得更加便捷,让开发者能够更加专注于业务逻辑,而将通用性功能如日志、事务处理等进行有效隔离,提高了代码的可维护性和可读性。在实际项目中,合理利用AOP注解可以极大地...