너무 오랫동안이 문제를 이미 해결하고 작업 중입니다. 다양한 stackoverflow 게시물을 살펴 보았지만 여전히 진행되고있는 일에 대해 여전히 혼란 스러웠습니다.Spring 3 @Configurable (Maven 사용)을 사용하여 jar 종속성이있는 객체의 컴파일 시간 문제가 발생했습니다.
내가 원하는 것을 첫째로, :
나는 내 웹 프로젝트에 종속성으로 사용되는 지속성 항아리가있다. 이 지속성 jar 내에서 daos는 웹 프로젝트의 spring config를 사용하여 잘 설정됩니다. 지금 내가하고 싶은 것은 기본 클래스 (추상)입니다. String에 설정된 속성을 삽입 할 수 있기를 원하지만이 추상 클래스를 확장하는 클래스는 Spring을 통해 직접 제어되지 않습니다 (예 : via 새로운 MyImp().
수집 한 모든 것에서 @ Configfigurable을 사용해야합니다.
이상한 점은 코드가 (aspect 플러그인을 사용하는 Maven으로) 모두 컴파일되고 @Configurable 추상 클래스를 확장하는 객체를 호출하는 것이 "블랙홀" - 오류가 없는데도 오래된 skool System.out.print 문을 통해 시스템에 인쇄 할 수있는 것이 없습니다. ??? 정말 이상합니다.
내가 설정하는 일을 얼마나 관련 정보는 생각 아래
(분명히 표시되지 않는 모든) :웹 프로젝트 스프링 설정 :
<util:properties id="props" location="classpath:application.properties"/>
<context:annotation-config />
<context:spring-configured/>
<context:component-scan base-package="com.foo" />
<bean class="com.foo.MyAbstractClass" abstract="true" scope="prototype">
<property name="xlsDir" value="${xlsDir}"/>
</bean>
//some DAOs are injected with datasources..not shown. Props being set just fine for the
//datasources from application.properties, and the DAOs will work fine
위가 사용하는 항아리 MyAbstractClass 및 그 자손을 보유하고있는 웹 프로젝트에는 XML이 없다. 다양한 파일이 MyAbstractClass를 확장하고 새로운 응용 프로그램 내에서 생성됩니다. MyImp imp = new MyImp(); imp.bar();
MyAbstractClass 관련 정보 :
@Configurable
public abstract class MyAbstractClass {
private String xlsDir;
public void setXlsDir(String xlsDir) {
this.xlsDir = xlsDir;
}
public void bar() {
System.out.println("this won't even get printed, yet no errors!");
System.out.println("xlsDir is "+xlsDir);
}
}
가 나중에 @Autowiring와 (내가 처음 어쨌든 뭘하려) @Value를 사용하여 주위를 재생할 수 있습니다,하지만 지금 내가 직조가 제대로 작동도 확실하지 않다 . 문제는 어쩌면 persistence jar가 maven (weaving)을 통해 먼저 컴파일 된 것일 수 있습니다 - 그럼에도 불구하고 웹 프로젝트를 기반으로 나중에 xlsDir에 대한 설정자가 무엇인지 알 수 없습니까? 비록 bar()에 대한 호출이 사라지면 왜 그런지 설명하지 못한다. 그래서 어떤 일이 일어나고있다. 나는 봄 루의 치어가 일을 본 것을 기반으로 컴파일 받는다는 설정 한 두 프로젝트의
(정말 받는다는 측면 봄과 직물이 치어에 있어야 온라인 어떤 매우 어렵 못 박는 다운을.)
여기 (아래에서 왼쪽 스프링 루의 의견 - 그들은 나의되지 않습니다) 관련 치어 정보입니다 :
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.2</version> <!-- NB: do use 1.3 or 1.3.x due to MASPECTJ-90 - wait for 1.4 -->
<dependencies>
<!-- NB: You must use Maven 2.0.9 or above or these are ignored (see
MNG-2972) -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<configuration>
<outxml>true</outxml>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
어떤 도움이 많이 감사합니다. 나는 곧 포기하고 그냥 내 속성 정적 블록에 파일과 :) 함께 할 수로드하려고 해요