Tag: aspectj

如何在方面内使用ajc构建参数?

我需要在方面内知道我的.jar的名称,这样我就可以通过@DeclareParents创建一个字符串字段。 我知道我可以将内容传递给ajc编译器,但实际上是否可以使用方面传递的参数? 最终结果应该是带有附加字段的类,其中包含我的.jar名称作为值。 更新:建议测试。 Gson.jar是类路径上的.jar InputStream r = Gson.class.getClassLoader().getResourceAsStream(“META-INF/MANIFEST.MF”); String x = getString(r); System.out.println(x); 输出: Manifest-Version: 1.0 Name: org/aspectj/lang/ Specification-Title: AspectJ Runtime Classes Specification-Version: 1.7 Specification-Vendor: aspectj.org Implementation-Title: org.aspectj.tools Implementation-Version: 1.7.3 Implementation-Vendor: aspectj.org Bundle-Name: AspectJ Runtime Bundle-Version: 1.7.3 Bundle-Copyright: (C) Copyright 1999-2001 Xerox Corporation, 2002 Palo Alto Research Center, Incorporated (PARC), 2003-2009 Contributors. All Rights […]

使用Ajc编译器与Spring问题AspectJ

当我尝试使用ajc编译器弹簧aspectj时,我得到跟随errror.when我正在删除aspectj然后代码工作正常是编辑时间编织有什么导致问题 caused by: java.lang.ExceptionInInitializerError at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877) … 31 more Caused by: java.lang.NullPointerException at com.cdf.dfdxc.aspect.logging.LoggingAspect.logEntry(LoggingAspect.java:76) at com.cdfc.fdged.uow.UdfdFactory.(UOWfdy.java:1) Spring bean文件 类路径:/资源/hibernate的映射 com.ibm.db2.jcc.DB2Driver jdbc:db2://20.15.29.108:50001/XC128086 db2dut$ db2dut org.hibernate.dialect.DB2Dialect update org.hibernate.context.ThreadLocalSessionContext org.hibernate.connection.C3P0ConnectionProvider 3 30 3 0 0 0 thread org.hibernate.cache.HashtableCacheProvider true false false false false 记录方面代码 @Pointcut(“within(com.csc.exceed.uow.*)”) […]

AOP中调用和执行之间的区别

我试图尽可能简单地理解AOP中执行和调用之间的区别。 从我收集的内容中,execution()将在执行代码中添加一个连接点,因此在这种情况下是HelloWorldSayer.sayHello() ,但如果切入点是call() ,则连接点将是HelloWorldSayer.main() 。 它是否正确? public class HelloWorldSayer { public static void main (String[] args) { sayHello(); } public static void sayHello() { System.out.println(“Hello”); } } public aspect World { public hello(): execution(static void HelloWorldSayer.sayHello()); after() hello() { System.out.println(“Bye”); } }

AspectJ:忽略自定义* .aj文件

为什么aspectj-maven-plugin会忽略我的AnnotationInheritor.aj文件? 我配置错了吗? 我想用自定义注释建议ItemRepository#getById : @Repository public interface ItemRepository extends JpaRepository { // AOP does not work, since autogenerated ItemRepositoryImpl#getById // won’t have @MyAnnotation annotation @MyAnnotation public Item getById(Long id); } @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Inherited public @interface MyAnnotation { } @Aspect @Component public class MyAspects { @Around(“@annotation(MyAnnotation)”) public Object execute(ProceedingJoinPoint joinPoint) { // This advice works correct […]

AspectJ AOP LTW无法动态加载javaagent

这是我的非工作项目示例 。 它包含2个模块: aop-lib – 用作lib的方面。 它包含以下类 Wrap.java – 它是用于附加建议的注释 WrapDef.java – 它是上面提到的Wrap注释的定义。 aop-app – 使用上面的方面lib DynamicLoad.java – 动态加载javaagent的类 Main.java – 使用Wrap注释的主类。 目录结构如下: . ├── README.md ├── aop-app │ ├── pom.xml │ └── src │ └── main │ └── java │ └── com │ └── aop │ └── app │ ├── DynamicLoad.java │ └── Main.java […]

java.lang.ClassNotFoundException:org.aspectj.util.PartialOrder $ PartialComparable

我在我的Web应用程序中使用Spring 4.2.4.RELEASE,我想从中删除对aspectjweaver.jar的依赖。 我不直接使用AOP,我当然不使用AspectJ。 但我的应用程序失败,出现以下exception: java.lang.ClassNotFoundException: org.aspectj.util.PartialOrder$PartialComparable at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:450) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:403) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:760) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:368) at java.net.URLClassLoader$1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:361) at org.eclipse.jetty.webapp.WebAppClassLoader.findClass(WebAppClassLoader.java:510) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:441) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:403) at org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator.sortAdvisors(AspectJAwareAdvisorAutoProxyCreator.java:73) at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors(AbstractAdvisorAutoProxyCreator.java:91) at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:69) at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:346) at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:298) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:422) 有没有办法彻底删除aspectjweaver.jar上的依赖?

使用@Autowired与AspectJ和Springboot

我想将@Autowired注释用于“Aspect”。 我想在我的方面注入一个存储库但是当我尝试调用我的自动连接类的方法时,会发生NullPointException。 @Aspect public class AspectSecurity { @Autowired private UserRepository userRepository; @After(“execution(public * dash.*.*Controller.*(..))”) public void authentication(JoinPoint jp) throws UnauthorizedException { System.out.println(“SECURITY !”); System.out.println(userRepository.findAll().toString()); } } 我已经尝试在我的方面类上面添加@Component但是我有同样的错误。 如果我不使用方面类但是@Controller我可以毫无问题地调用我的存储库。 一些文档说明了使用xml文件的spring配置,但是使用spring boot我没有这些文件。 这是我的pom.xml的一部分,它调用了aspectJ插件: org.codehaus.mojo aspectj-maven-plugin 1.4 true 1.6 1.6 ignore ${compiler.version} UTF-8 false org.springframework spring-aspects compile test-compile org.aspectj aspectjrt ${aspectj.version} org.aspectj aspectjtools ${aspectj.version} 这是我的Application类: package dash; import […]

使用applicationcontext.getbean vs @configurable 的优点

与使用applicationcontext.getbean进行的bean管理的bean相比,使用@configurable的优势是什么? 任何人列出赞成和缺点?

Hibernate Validator方法或构造函数validation

如何使用Hibernatevalidation器validation构造函数或方法中的参数? 我希望validation在ValueObject创建之前发生,这样我就可以抛出exception而不创建对象,除非所有参数都有效。 基本上我正在尝试使用注释,而不是像这样做,如果可能的话: public class ConditionalPerson { private String name; private String surname; private int age; public ConditionalPerson(String name, String surname, int age){ if (name == null || surname == null || age < 1) { throw new IllegalArgumentException(); } this.name = name; this.surname = surname; this.age = age; } } 我已经尝试过像这样的文档似乎可以工作,但仍然会导致创建对象。 public class Person […]

如何横切注释的方法和构造函数?

这就是我正在做的事情: @Aspect public class MethodLogger { @Around(“(execution(* *(..)) || initialization(*.new(..))) && @annotation(Foo)”) public Object wrap(ProceedingJoinPoint point) throws Throwable { // works fine, but only for methods } } 该代码段工作正常,但仅适用于方法调用。 这是AspectJ maven插件在应用方面后所说的(不是在编译期间,它工作得很好): around on initialization not supported (compiler limitation) 任何解决方法? 我在使用OpenJDK 7: java version “1.7.0_05” Java(TM) SE Runtime Environment (build 1.7.0_05-b06) Java HotSpot(TM) 64-Bit Server VM […]