[SPRING] spring-batch-admin을 기존의 스프링 부트에 통합 한 후에 속성을 가져올 수 없음
SPRINGspring-batch-admin을 기존의 스프링 부트에 통합 한 후에 속성을 가져올 수 없음
저는 스프링 배치와 스프링 부트를 사용하는 프로젝트에 참여했습니다.
정확한 규칙에 따라 다음과 같이 통합하는 법을 따랐습니다. 1. 모든 @EnableBatchProcessing 제거 2. ServletConfiguration과 WebappConfiguration을 추가합니다. (또한
@Import({ ServletConfiguration.class, WebappConfiguration.class })
수정 된 application.properties는 다음을 사용합니다.
server.servletPath=/*
spring.freemarker.checkTemplateLocation=false
ENVIRONMENT=mysql
이제 여기에 부작용이 있습니다. 내 응용 프로그램은 java config 이외에 applicationContext .xml을 사용하고 있습니다.
그 applicationContext에는 place holder가 있습니다.
<context:property-placeholder
location="file:///etc/location/services/myapp.properties"/>
<bean name="configuration" class="com.mycompany.commons.configuration.factory.BeanAwareConfigurationFactory">
<property name="serviceId" value="${serviceId}"/>
...
</bean>
내가 spring-batch-admin을 통합하자마자이 오류가 발생했습니다 :
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'serviceId' in string value "${serviceId}"
at
...
가져 오기 위해 @PropertySource를 시도했지만 작동하지 않았습니다.
@PropertySource("file:///etc/location/services/myapp.properties")
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
System.out.printf("Started processor service app");
}
Spring-Batch 프로젝트에서 spring-batch-admin을 삭제하자마자 그 소품을 첨부 할 수 있습니다.
어떤 생각을 어떻게 극복 할 수 있을까요?
해결법
-
==============================
1.spring-batch-admindefault 컨텍스트로드 구성을 무시할 수 있습니다. src / main / resources / META-INF / spring / batch / override / manager /에서로드해야하는 리소스 구성을 사용하여 env-context.xml 파일을 배치 할 수 있습니다.
spring-batch-admindefault 컨텍스트로드 구성을 무시할 수 있습니다. src / main / resources / META-INF / spring / batch / override / manager /에서로드해야하는 리소스 구성을 사용하여 env-context.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"> <!-- Use this to set additional properties on beans at run time --> <bean id="placeholderProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:/org/springframework/batch/admin/bootstrap/batch.properties</value> <value>classpath:batch-default.properties</value> <value>classpath:batch-${ENVIRONMENT:hsql}.properties</value> <!-- this line you can add--> <value>file:///etc/location/services/myapp.properties</value> </list> </property> <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" /> <property name="ignoreResourceNotFound" value="true" /> <property name="ignoreUnresolvablePlaceholders" value="false" /> <property name="order" value="1" /> </bean> </beans>
-
==============================
2.github 프로젝트를 포크 한 다음 자리 표시 자 오류를 방지하기위한 수정을 추가했습니다. https://github.com/vesperaba/spring-batch-admin-spring-boot에서 새 코드를 얻을 수 있습니다.
github 프로젝트를 포크 한 다음 자리 표시 자 오류를 방지하기위한 수정을 추가했습니다. https://github.com/vesperaba/spring-batch-admin-spring-boot에서 새 코드를 얻을 수 있습니다.
문제는 스프링 배치 (Spring Batch)가 자체의 속성 자리 표시자를 가졌으므로 덮어 써야하지만이를 수행하려면 일부 파일을 수동으로 가져와야 정의를 피할 수 있습니다.
여기에서 새로운 conf 파일을 찾을 수 있습니다 : https://github.com/vesperaba/spring-batch-admin-spring-boot/blob/master/src/main/java/de/codecentric/batch/config/MainV2Configuration.java
from https://stackoverflow.com/questions/29195981/cant-import-properties-after-integrating-spring-batch-admin-into-existed-spring by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 일치하는 와일드 카드는 엄격하지만 'resources'요소에 대한 선언을 찾을 수 없습니다. (0) | 2019.04.25 |
---|---|
[SPRING] context.xml에서 자리 표시자를 사용할 수 있습니까? (0) | 2019.04.25 |
[SPRING] 봄 단순히 html 페이지 렌더링하기 (0) | 2019.04.25 |
[SPRING] Spring + TestNG가 트랜잭션으로 롤백하지 않음 (0) | 2019.04.25 |
[SPRING] 이전 스프링 보안 3.0에 새 스프링 3.2를 사용할 수 있습니까? (0) | 2019.04.25 |