Мне нужно внедрить зависимости в мои доменные классы, поэтому я использую @Configurable следующим образом:
@Configurable(preConstruction=true,dependencyCheck=true)
@Entity
@org.hibernate.annotations.Entity(dynamicInsert=true,dynamicUpdate=true)
@Table(name="TBL_COMPANY")
class Company
{
@Id
private long id;
@Autowired
private transient IIdentityQueryService identityQueryService;
Company()
{
Assert.notNull(identityQueryService, "IIdentityQueryService was not injected");
}
}
Мой aop.xml:
<!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "http://www.eclipse.org/aspectj/dtd/aspectj.dtd">
<aspectj>
<weaver options="-verbose">
<include within="com.xl.nrs.identity.*"/>
<exclude within="*..*CGLIB*"/>
<exclude within="*..*javassist*"/>
<exclude within="*..*DTO*"/>
<exclude within="*..*Service*"/>
<exclude within="*..*Test*"/>
</weaver>
</aspectj>
Я включаю следующее в свойфайл контекста приложения:
...
<context:spring-configured/>
<context:load-time-weaver/>
...
Параметр JVM:
-javaagent:../NRS-SharedLibs/lib/org.springframework.instrument-3.0.5.RELEASE.jar
Наконец, мой упрощенный модульный тест:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"/mycontext.xml"})
public class TestCompany
{
@Test
public void testCreateCompany() throws Exception
{
Company company = new Company();
}
}
Все прошло хорошо, пока я не добавил новый метод вмой модульный тест с классом домена в качестве одного из его параметров:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"/mycontext.xml"})
public class TestCompany
{
@Test
public void testCreateCompany() throws Exception
{
Company company = new Company();
}
//New method that makes @Configurable not working
private void someNewMethod(Company company)
{
...
}
}
На этот раз зависимость не будет введена, нет ошибок, нет ничего.
Если параметр новогоМетод не был классами домена, все снова прошло нормально.
Это так странно, потому что я только добавил метод в класс модульного тестирования, а не в класс домена или где-либо еще.
Кто-нибудь испытывал то же самое?проблема?
Любая помощь будет принята с благодарностью.
Спасибо и С уважением,
Setya