【发布时间】:2015-06-26 08:59:44
【问题描述】:
我在 STS 的 Spring Boot 启动项目中使用这个 Spring AOP 代码。在调试了一段时间后,我没有看到 AspectJ 语法有任何问题。 Maven 依赖项由 STS 为 AOP 启动项目生成。这段代码中是否有明显的遗漏,比如注释?另一个问题可能与 AOP 入门项目有关,也可能与我尝试在 @PostConstruct 方法中测试代码的方式有关。
我安装了 AJDT,但 STS 似乎应该在 IDE 中自己显示 AspectJ 标记。正确的 ?我没有看到标记。 STS 中包含哪些其他 AspectJ 调试选项? -Xlint 是我在 Eclipse/AJDT 中使用的。
StateHandler.java
public class StateHandler<EVENTTYPE extends EventType> {
private State<EVENTTYPE> state;
private Event<EVENTTYPE> event;
public StateHandler(State<EVENTTYPE> state, Event<EVENTTYPE> event) {
this.state = state;
this.event = event;
}
public void handle( Event<EVENTTYPE> event ){
state = state.handle( event );
}
public State<EVENTTYPE> getState() {
return state;
}
}
DeviceLogger .java
@Aspect
@Component
public class DeviceLogger {
private static Logger logger = Logger.getLogger("Device");
@Around("execution(* com.devicemachine.StateHandler.*(..))")
public void log() {
logger.info( "Logger" );
}
}
LoggerApplication.java
@SpringBootApplication
public class LoggerApplication {
private static Logger logger = Logger.getLogger("Device");
public static void main(String[] args) {
SpringApplication.run(LoggerApplication.class, args);
}
@PostConstruct
public void log(){
DeviceState s = DeviceState.BLOCKED;
StateHandler<DeviceEvent> sh = new StateHandler<DeviceEvent>( s,
Event.block(DeviceEvent.BLOCKED, "AuditMessage") );
sh.handle(Event.block(DeviceEvent.UNBLOCKED, "AuditMessage"));
}
}
【问题讨论】: