Ваша основная проблема заключается в том, что вы должны запускать ваше приложение с AspectJ ткачом в качестве агента Java. Если вы также добавите Spring-Instrument в качестве второго агента Java, вы можете избежать добавления ткача в класс приложения.как боб явно Spring позаботится об этом.Так как вам все равно нужно изменить командную строку, просто добавьте оба агента:
-javaagent:/path/to/spring-instrument-5.0.9.RELEASE.jar -javaagent:/path/to/aspectjweaver-1.8.13.jar
На самом деле вам также не нужно @EnableAspectJAutoProxy
(несмотря на то, что имя используется только для Spring AOP), поскольку вы уже используете @EnableLoadTimeWeaving
(для AspectJ LTW).
Во избежание появления сообщения об ошибке о «круговом пути просмотра» позже, вы также должны добавить аннотацию @ResponseBody
к вашему приветствию:
public @ResponseBody String greeting(...)
Я также рекомендую добавить файл ресурсов META-INF / aop.xml , чтобы избежать большого количества сообщений об ошибках из-за аспектов, применяемых ко всем видам кода Spring и сторонних разработчиков, и для возможности болееточно сказать AspectJ, что нужно соткать, что регистрировать и т. д. С этой конфигурацией в вашем проекте ...
<?xml version="1.0"?>
<!-- AspectJ load-time weaving config file with Spring aspects -->
<aspectj>
<!--<weaver options="-verbose -showWeaveInfo -Xlint:ignore">-->
<weaver options="-showWeaveInfo -Xlint:ignore">
<include within="example..*"/>
</weaver>
<!-- It also works if you omit this section -->
<aspects>
<aspect name="org.springframework.beans.factory.aspectj.AnnotationBeanConfigurerAspect"/>
<!--
<aspect name="org.springframework.scheduling.aspectj.AnnotationAsyncExecutionAspect"/>
<aspect name="org.springframework.transaction.aspectj.AnnotationTransactionAspect"/>
<aspect name="org.springframework.cache.aspectj.AnnotationCacheAspect"/>
-->
</aspects>
</aspectj>
... Я получаю такой вывод журнала:
[AppClassLoader@18b4aac2] warning javax.* types are not being woven because the weaver option '-Xset:weaveJavaxPackages=true' has not been specified
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.5.RELEASE)
2018-12-16 09:54:23.804 INFO 5784 --- [ main] example.Application : Starting Application on Xander-Ultrabook with PID 5784 (C:\Users\alexa\Documents\java-src\SO_AJ_SpringConfigurableBeans\target\classes started by alexa in C:\Users\alexa\Documents\java-src\SO_AJ_SpringConfigurableBeans)
2018-12-16 09:54:23.804 INFO 5784 --- [ main] example.Application : No active profile set, falling back to default profiles: default
2018-12-16 09:54:23.867 INFO 5784 --- [ main] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@7c83dc97: startup date [Sun Dec 16 09:54:23 ICT 2018]; root of context hierarchy
2018-12-16 09:54:24.659 INFO 5784 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2018-12-16 09:54:24.674 INFO 5784 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2018-12-16 09:54:24.674 INFO 5784 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.34
(...)
2018-12-16 09:54:25.049 INFO 5784 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/greeting],methods=[GET]}" onto public java.lang.String example.GreetingController.greeting(java.lang.String,org.springframework.ui.Model)
(...)
2018-12-16 09:54:25.315 INFO 5784 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2018-12-16 09:54:25.315 INFO 5784 --- [ main] example.Application : Started Application in 1.848 seconds (JVM running for 3.272)
2018-12-16 10:10:39.050 INFO 5784 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring FrameworkServlet 'dispatcherServlet'
2018-12-16 10:10:39.051 INFO 5784 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization started
2018-12-16 10:10:39.066 INFO 5784 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 15 ms
[AppClassLoader@18b4aac2] weaveinfo Extending interface set for type 'example.PrintDelegator' (PrintDelegator.java) to include 'org.springframework.beans.factory.aspectj.ConfigurableObject' (AnnotationBeanConfigurerAspect.aj)
[AppClassLoader@18b4aac2] weaveinfo Join point 'initialization(void org.springframework.beans.factory.aspectj.ConfigurableObject.<init>())' in Type 'example.PrintDelegator' (PrintDelegator.java:7) advised by before advice from 'org.springframework.beans.factory.aspectj.AnnotationBeanConfigurerAspect' (AbstractDependencyInjectionAspect.aj:77) [with runtime test]
[AppClassLoader@18b4aac2] weaveinfo Join point 'initialization(void org.springframework.beans.factory.aspectj.ConfigurableObject.<init>())' in Type 'example.PrintDelegator' (PrintDelegator.java:7) advised by afterReturning advice from 'org.springframework.beans.factory.aspectj.AnnotationBeanConfigurerAspect' (AbstractDependencyInjectionAspect.aj:86) [with runtime test]
[AppClassLoader@18b4aac2] weaveinfo Join point 'initialization(void example.PrintDelegator.<init>())' in Type 'example.PrintDelegator' (PrintDelegator.java:7) advised by afterReturning advice from 'org.springframework.beans.factory.aspectj.AnnotationBeanConfigurerAspect' (AbstractDependencyInjectionAspect.aj:86) [with runtime test]
test