Spring AOP с автоматическим подключением Объекты обнуляются во время выполнения
Я пытаюсь распечатать записи входа и выхода для всех методов в проекте, используя AOP. После включения AOP бины @Autowired в нескольких классах становятся нулевыми и, таким образом, приводят к исключению NullPointerException.
AOPConfig
@Aspect
@Configuration
public class SpringAOPConfig {
@Before("execution(* org.abc..*(..)) && !execution(* org.abc.dao..*(..)) && !execution(* org.abc.delegete.dto..*(..))")
public void logMethodEntry(JoinPoint joinPoint) {
//entry logger
}
@After("execution(* org.abc..*(..)) && !execution(* org.abc.dao..*(..)) && !execution(* org.abc.delegete.dto..*(..))")
public void logMethodExit(JoinPoint joinPoint) {
// exit logger
}
}
Spring Config
@Configuration
@EnableWebMvc
@EnableAsync
@ComponentScan({"org.abc.*"})
@PropertySource("classpath:application.properties")
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class SpringConfig implements WebMvcConfigurer,ApplicationContextAware {
....
}
контроллер
package org.abc.web.controller.producer;
@RestController
@RequestMapping(value = "/api/v1/producer/admin")
public class ABCRestController {
@Autowired
ServiceMapper serviceMapper;
....
....
}
Здесь я считаю, что serviceMapper имеет значение null. Объект становится автоматически подключенным без AOP. Я попробовал автоматическую разводку с использованием методов установки, и я мог назначить прокси-объект CGLIB переменной во время инициализации, но во время выполнения переменная становится нулевой, а метод установки не вызывается между ними.
0 ответов
Обнародование всех методов и класса решило проблему автоматического подключения.