Spring @Configurable не работает, если в модульное тестирование добавлен новый метод с классами домена в качестве параметра - PullRequest
1 голос
/ 07 июня 2011

Мне нужно внедрить зависимости в мои доменные классы, поэтому я использую @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

...