Spring AOP自定义注解样例
参考:http://www.cnblogs.com/shipengzhi/articles/2716004.html
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface Ann { String value(); }
注解处理器 public class AnnoSupport { /** * 处理过程 * @param joinPoint AOP切入点 * @return * @throws Throwable */ public Object doSupport(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("doSupport"); try { return process(joinPoint); } catch (Throwable t) { throw t; } } /** * 处理过程 * @param joinPoint AOP切入点 * @return * @throws Throwable */ private Object process(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("process"); Class<?> clazz = joinPoint.getTarget().getClass(); String className = clazz.getSimpleName();//获取类名 Signature signature = joinPoint.getSignature(); Method method = ((MethodSignature) signature).getMethod(); String methodName = method.getName();//获取方法名 Method realMethod = clazz.getMethod(methodName, method.getParameterTypes()); if (realMethod.isAnnotationPresent(Ann.class)) { ... ... Ann ann = realMethod.getAnnotation(Ann.class);//获取注解 System.out.println("ann:" + ann.value()); } return joinPoint.proceed();//执行方法 } }
spring配置 <bean id="annoSupport" class="com.test.AnnoSupport"/> <bean id="TestAnn" class="com.test.TestAnn"> </bean> <!- 注册注解处理器 --> <aop:aspectj-autoproxy/> <aop:config> <aop:aspect ref="annoSupport"> <aop:pointcut id="supportMethod" expression="@annotation(com.test.Ann)"/> <aop:around pointcut-ref="supportMethod" method="doSupport"/> </aop:aspect> </aop:config>
测试类 public class TestAnn { @Ann("test") public String ann(String test){ return test; } public static void main(String[] args){ ApplicationContext ac = new FileSystemXmlApplicationContext("file:D:\\workspace\\src\\main\\java\\com\\test\\applicationContext.xml"); TestAnn test = (TestAnn)ac.getBean("TestAnn"); test.ann("Test ann"); } }
相关推荐
本示例主要探讨如何在Spring中创建和使用自定义注解,以及与AOP结合实现动态代理。 首先,我们需要了解自定义注解的基本结构。在Java中,自定义注解是以`@interface`关键字定义的。例如,我们可以创建一个名为`...
在`SpringAopStudy`工程样例中,你可以看到如何创建一个切面类,定义切点和通知,以及如何在配置文件或通过注解方式启用AOP。通常,你会看到一个包含`@Aspect`注解的类,里面定义了`@Pointcut`和各种`@Advice`。此外...
本篇将深入探讨Spring AOP中的注解使用,帮助开发者理解如何在实际项目中实现切面逻辑。 首先,我们需要了解AOP的基本概念。面向切面编程是一种编程范式,它允许程序员定义“切面”,这些切面封装了关注点,如日志...
- [Spring Boot自定义Banner](http://blog.didispace.com/spring-boot-banner/) ### Dubbo进行服务治理 - chapter9-2-1:[Spring Boot中使用Dubbo进行服务治理] - chapter9-2-2:[Spring Boot与Dubbo中管理服务...
这里的`ReadFrom`是自定义注解,用于标记那些应该从特定数据源读取数据的方法。 最后,我们可以通过注解`@ReadFrom`或`@WriteTo`来指定方法应使用哪个数据源。例如: ```java @Service public class UserService {...
8. **AOP(面向切面编程)**:Spring MVC与Spring的AOP模块紧密集成,可以方便地进行横切关注点的处理,如事务管理、日志记录等。 9. **RESTful支持**:Spring 4.1进一步加强了对RESTful风格的Web服务支持,可以...
在"spring的bean加载顺序样例项目"中,我们可以通过分析和实验来深入理解这一主题。下面将详细阐述Spring Bean的加载顺序以及相关知识点。 1. **Bean的定义与作用域** - Spring中的Bean是在`beans.xml`或Java配置...
6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 6.1.3. Spring的AOP代理 6.2. @AspectJ支持 6.2.1. 启用@AspectJ支持 6.2.2. 声明一个切面 6.2.3. 声明一个...
6.4.2. Spring AOP中使用@AspectJ还是XML? 6.5. 混合切面类型 6.6. 代理机制 6.7. 编程方式创建@AspectJ代理 6.8. 在Spring应用中使用AspectJ 6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1....
6.4.2. Spring AOP中使用@AspectJ还是XML? 6.5. 混合切面类型 6.6. 代理机制 6.6.1. 理解AOP代理 6.7. 以编程方式创建@AspectJ代理 6.8. 在Spring应用中使用AspectJ 6.8.1. 在Spring中使用AspectJ进行domain ...
6.4.2. Spring AOP中使用@AspectJ还是XML? 6.5. 混合切面类型 6.6. 代理机制 6.7. 编程方式创建@AspectJ代理 6.8. 在Spring应用中使用AspectJ 6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 ...
6.4.2. Spring AOP中使用@AspectJ还是XML? 6.5. 混合切面类型 6.6. 代理机制 6.6.1. 理解AOP代理 6.7. 以编程方式创建@AspectJ代理 6.8. 在Spring应用中使用AspectJ 6.8.1. 在Spring中使用AspectJ进行domain ...
Spring MVC 的设计目的是简化开发,提高可测试性,并与其他Spring框架无缝集成,如Spring Core、Spring Beans和Spring AOP。在这个"spring mvc demo"中,我们可以期待学习到关于如何设置和运行一个基本的Spring MVC...
- **实现机制**:通过Spring AOP拦截方法调用,检查用户是否有执行该操作的权限。 #### 第六章:高级配置和扩展 **自定义安全过滤器** - **实现**:扩展Spring Security提供的过滤器,实现特定的安全需求。 - **...
同时,还需要配置Spring与Struts2的整合,例如使用Spring插件或自定义拦截器实现Action的依赖注入。 5. **配置Hibernate**:编写hibernate.cfg.xml,设定数据库连接参数。创建实体类,并使用Hibernate注解或XML映射...
Spring的主要特性包括依赖注入(DI)、面向切面编程(AOP)、事务管理、数据访问抽象等。依赖注入使得组件之间的耦合度降低,提高了代码的可测试性和可维护性。Spring还提供了大量的模块,如Spring MVC、Spring JDBC...
使用 @EnableCaching 注解可以让 Spring Boot 开启对缓存的支持。例如: @SpringBootApplication @EnableCaching public class SpringBootStudentCacheCaffeineApplication { public static void main(String[] ...
Spring Modules Validation可以方便地集成到Spring的AOP(面向切面编程)体系中,利用AspectJ或Spring的@PostValidate注解,可以在业务层面上进行更复杂的逻辑判断。 **压缩包文件名称列表:validation-master** 这...
**Spring框架**是整个应用程序的基础,它是一个轻量级的容器,提供了依赖注入(DI)和面向切面编程(AOP)等核心特性。在4.3版本中,Spring进一步优化了对Java 8的支持,增强了对反应式编程的支持,并且提升了整体...
Spring 2在这个基础上进一步强化了AOP(面向切面编程)和Web MVC功能,同时也增强了对其他框架如Hibernate的支持。 Struts2则是一个基于MVC设计模式的Web框架,它简化了视图、控制器和模型之间的交互。Struts2与...