我想使用Spring 4.X编织以下自定义方面。
(我使用Scala,但与Java完全相同)
我基于现有的code,作为Vaughn Vernon的IDDD书中的样本:
@Aspect
@Component
class EventProcessor @Autowired()(private val eventRepository: EventRepository) {
@Before("execution(* com.mymainpackage.*.application.commands.*.*(..)")
def listen() {
DomainEventPublisher.instance().subscribe(new DomainEventSubscriber[Event] {
def handleEvent(domainEvent: Event) {
eventRepository.save(domainEvent)
}
def subscribedToEventType = {
classOf[Event]
}
})
}
}
我的application-context.xml
:
.........
<context:load-time-weaver/>
<context:annotation-config/>
<context:component-scan
base-package="........" />
我想用方面编织的典型类/服务包含这种方法:
def handle(event:Event)
及其相应的接口和实现可以在这个显式包中找到,例如:
com.mymainpackage.myboundedcontext1.application.commands.anestedpackage
我已经检查过base-package包含自定义方面的类包。
是否有必要在@PointCut
之外另外声明@Before
?
样本没有这样做...
当然,我使用以下jar执行我的代码,允许在运行时“编织”,所以:
-javaagent:/cache/org.springframework/spring-instrument/jars/spring-instrument-4.0.0.RELEASE.jar
我是否错过了“显而易见”的内容? 知道如何解决这个问题吗?
答案 0 :(得分:0)
正如@ M.Deinum所提到的,我忘记了关于我的切入点的匹配器的最后)
。
此外,我忘了指定aspectj-autoproxy,以便考虑我的方面类 有了这个,如果我希望所有方面类都有他们创建的相应代理,就不需要声明一个aop.xml。
所以我通过向我的application-context.xml
添加spring-aop xsd来指定它(“-------&gt;”来制作一个传说,虽然无效:)在这个xml中:< / p>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:neo4j="http://www.springframework.org/schema/data/neo4j"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop" ------->That is added
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/data/neo4j
http://www.springframework.org/schema/data/neo4j/spring-neo4j-2.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd" ---------> That is added >
.....
<aop:aspectj-autoproxy/>
.....
现在整个工作。