【发布时间】:2019-08-29 15:06:36
【问题描述】:
我正在使用 Springs AOP 迈出第一步,并想从一个简单的日志记录建议开始。我的项目是一个多模块的maven项目,结构如下:
父项目
|__aop
|__数据
|__网络
web 模块在 de.my.awsome.project.web.service 包中有一个用户服务类,带有 saveNewUser 方法:
@Service
public class UserService {
...
public MdUser saveNewUser(UserModel user) {
MdUser newUser = this.save(user);
createGroupMembership(user, newUser);
return newUser;
}
}
该方法按预期工作,因此不必为此烦恼。
我现在所做的是在 aop 模块中创建以下类:
@Component
@Aspect
public class LoggingAspect {
Logger logger = Logger.getLogger(getClass());
@Before("execution(public * de.my.awsome.project.web.service.UserService.saveNewUser(..))")
public void newUserLog(JoinPoint joinpoint) {
logger.info(joinpoint.getSignature() + " with user " + joinpoint.getArgs()[0]);
}
}
我在aop模块的pom中添加了web模块的依赖:
<dependency>
<groupId>de.my.awsome.project</groupId>
<artifactId>web</artifactId>
<version>${project.version}</version>
</dependency>
我什至写了一个 ConfigurationClasse,尽管我认为 SpringBoot 不需要这样做:
@Configuration
@ComponentScan(basePackages="de.fraport.bvd.mobisl.aop")
public class AspectsConfig {
}
预期的结果是类似“saveNewUser with user xyz”的日志消息。但是永远不会调用日志记录方法。我错过了什么?
【问题讨论】:
标签: maven spring-boot spring-aop multi-module