我使用AspectJ設置LTW並且非常快速且成功。下面是設置: 的beans.xml:AspectJ和Spring LTW在上傳時不起作用
<context:annotation-config />
<aop:aspectj-autoproxy />
<context:spring-configured />
<context:load-time-weaver />
<context:component-scan base-package="com.test.service" />
我的服務,將被裝配到一個類:
@Service
public class MyService {
}
父類:
public class Bar {
}
的配置類,即autowires該服務並擴展Bar。
@Configurable
public class BarExtended extends Bar{
@Autowired
private MyService service;
public MyService getWeavedInObject(){
return service;
}
}
而只是得到了一個全球化志願服務青年父類酒吧類:
public class Foo {
private Bar bar;
public void setBar(Bar bar) {
this.bar = bar;
}
}
而一個全成測試用例。它只是創建一個BarExtended的實例並檢查LTW是否工作。 Foo類什麼都不做。
@Test
public void simple(){
Foo foo = new Foo();
BarExtended barExtended = new BarExtended();
assertNotNull("LTW didn't work.", barExtended.getWeavedInObject());
}
此測試運行綠色。但下面的測試失敗:
@Test
public void simple(){
Foo foo = new Foo();
BarExtended barExtended = new BarExtended();
foo.setBar(barExtended);
assertNotNull("LTW didn't work.", barExtended.getWeavedInObject());
}
我只是將BarExtended類設置爲Foo的行。沮喪使AspjectJ不能正常工作。
順便說一句,當我改變Foo類使用BarExtended類(因此不需要向上轉型):
public class Foo {
private BarExtended bar;
public void setBar(BarExtended bar) {
this.bar = bar;
}
}
上述測試將起作用。有沒有人有一個想法,爲什麼AspjectJ行爲如此奇怪,當一個可配置的對象被上傳?
編輯:Follwing失敗,以及:
@Test
public void simple() {
Foo foo = new Foo();
BarExtended barExtended = new BarExtended();
Bar bar = (Bar) new BarExtended();
foo.setBar(bar);
assertNotNull("LTW didn't work.", barExtended.getWeavedInObject());
}
甲不同BarExtended對象設置爲Foo和第一barExtended目的通過AspectJ的忽略。 但使用反射來實例化BarExtended工作:
@Test
public void simple() throws InstantiationException, IllegalAccessException{
Foo foo = new Foo();
Bar barExtended = (Bar) BarExtended.class.newInstance();
foo.setBar(barExtended);
assertNotNull("LTW didn't work.", ((BarExtended)barExtended).getWeavedInObject());
}
奇怪,不是嗎?
非常感謝
問候,
安德烈亞斯
你使用什麼版本的Java,AspectJ? – Ralph 2012-02-24 08:26:16
我使用Java 1.6,aspectj 1.6.12和Spring 3.1.0.RELEASE。 – noCodeFound 2012-02-24 09:56:18
血腥地獄,我也遇到過這個問題。我剛剛在他們的JIRA中提出了這個問題以及可重現的測試用例:https://jira.spring.io/browse/SPR-12901 – bertie 2015-04-10 04:33:32