[SPRING] 클래스 패스에있는 jar 파일 안에있는 스프링 애플리케이션 컨텍스트 파일로드하기
SPRING클래스 패스에있는 jar 파일 안에있는 스프링 애플리케이션 컨텍스트 파일로드하기
내 Java 독립 실행 형 코드에서 ClassPathXmlApplicationContext를 사용하여 내 클래스 경로에있는 jar 파일 안에있는 applicationContext.xml을로드하려고합니다.
ApplicationContext context = new ClassPathXmlApplicationContext("classpath*:**/applicationContext*.xml");
applicationContext.xml 항목은 다음과 같습니다.
<bean id="myAdder" class="com.foo.bar.MyAdder">
<property name="floatAdder" ref="floatAdder"/>
</bean>
그리고, Bean을로드하려고하면 NoSuchBeanException이 발생합니다. 이 방법으로 콩을 적재 할 수 없습니까?
jar 파일은 내 클래스 패스에 maven 의존성으로 추가됩니다. Eclipse에서이 프로젝트의 Java 빌드 경로를 볼 때이 jar가 M2_REPO /.../로 링크 된 것을 볼 수 있습니다.
항아리가 클래스 패스에 있기 때문에 jar 파일 내부에 bean을로드 할 수 있다고 가정합니다. 내가 놓친 게 있니?
고마워, Abi
해결법
-
==============================
1.이 작업을해야합니다. 방금 2 개의 프로젝트를 만들고 확인했습니다.
이 작업을해야합니다. 방금 2 개의 프로젝트를 만들고 확인했습니다.
프로젝트 A (STS로 생성 된 표준 Maven 프로젝트)는 src / main / resources에 applicationContext.xml을 가지고 있습니다.
Pom.hml :
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.D</groupId> <artifactId>A</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> <spring.version>3.0.5.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> </dependencies> </project>
applicationContext.xml :
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="myAdder" class="com.foo.bar.MyAdder"> <property name="foo" value="bar" /> </bean> </beans>
프로젝트 B :
pom.xml : A와 동일하지만 A가 종속성으로 추가되는 것을 제외합니다.
<dependency> <groupId>org.D</groupId> <artifactId>A</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
프로젝트 B의 Start.java :
public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext( "classpath*:**/applicationContext*.xml"); MyAdder myAdder = (MyAdder) context.getBean("myAdder"); System.out.println(myAdder.getFoo()); }
mvn을 먼저 설치 한 다음 프로젝트 B에서 시작을 실행하십시오.
-
==============================
2.해당 위치에 classpath * : 접두어가 실제로 필요합니까? (그게 * 합법적입니까?) 나는 더 많은 것을 기대했을 것입니다 :
해당 위치에 classpath * : 접두어가 실제로 필요합니까? (그게 * 합법적입니까?) 나는 더 많은 것을 기대했을 것입니다 :
ApplicationContext context = new ClassPathXmlApplicationContext("**/applicationContext*.xml);
from https://stackoverflow.com/questions/6303242/loading-spring-application-context-files-that-are-inside-a-jar-in-classpath by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 부트 시작 시간 최소화 [duplicate] (0) | 2019.01.29 |
---|---|
[SPRING] Spring에서 트랜잭션을 사용할 때 포스트 커밋 만들기 (0) | 2019.01.29 |
[SPRING] 주석을 사용하여 Spring MVC 인터셉터를 연결하는 것이 가능한가? (0) | 2019.01.29 |
[SPRING] 예상 CSRF 토큰을 찾을 수 없습니다. 세션이 만료되었습니다. 403 (0) | 2019.01.29 |
[SPRING] 어떻게 thymeleaf th : 다른 변수에서 필드 값을 설정하는 방법 (0) | 2019.01.29 |