我正在创建一个Spring Boot应用程序,并尝试使用Spring AOP Introductions为类分配接口和实现。但是,目前,在实例化对象后,它似乎没有应用接口。
我是AOP的新手 - 是因为我没有从应用程序上下文创建类 - 如果是这样,这似乎是相当有限的。
的pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.5.4</version>
</dependency>
Application.java
@SpringBootApplication
@EnableAspectJAutoProxy
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
ResourceIdentification Aspect
@Aspect
@Component
public class ResourceIdentification {
@DeclareParents(value="com.example.Greeting*", defaultImpl=AbstractResource.class)
public Resource mixin;
}
控制器 - 用于演示目的。
@RestController
public class GreetingController {
private static final String template = "Hello, %s!";
@RequestMapping("/greeting")
public Resource greeting(@RequestParam(value="name", defaultValue="World") String name) {
Resource greeting = (Resource) new Greeting(String.format(template, name));
return greeting;
}
}
我的理解是Greeting类现在实现了Resource接口(使用AbstractResource)。但是,我得到了ClassCastException。
此外,我希望在启动过程中看到日志中的某些内容,以表明我的Aspect已被找到并应用,但是,日志与AOP没有任何关系。
非常感谢任何帮助。