Spring Javaconfig를 사용하여 java.util.Properties 필드에 속성 파일을 직접로드/autowire하는 방법을 알려주시겠습니까?java.util.Properties 필드 용 Spring JavaConfig
감사합니다.
나중에 편집 - 여전히 응답에 대한 검색 : IT는 속성이 java.util.Properties 필드에 파일을 직접 스프링 JavaConfig로로드 할 수 있습니까?
Spring Javaconfig를 사용하여 java.util.Properties 필드에 속성 파일을 직접로드/autowire하는 방법을 알려주시겠습니까?java.util.Properties 필드 용 Spring JavaConfig
감사합니다.
나중에 편집 - 여전히 응답에 대한 검색 : IT는 속성이 java.util.Properties 필드에 파일을 직접 스프링 JavaConfig로로드 할 수 있습니까?
는 XML 기반의 방법은 : 클래스의
<util:properties id="myProperties" location="classpath:com/foo/my-production.properties"/>
: 스프링 설정에
@Autowired
@Qualifier("myProperties")
private Properties myProperties;
JavaConfig 만
그것은 주석이 보이는 것처럼 :
@PropertySource("classpath:com/foo/my-production.properties")
이 클래스에 주석을 추가하면 파일의 등록 정보가 환경으로로드됩니다. 그런 다음 클래스에 환경을 autowire하여 속성을 가져와야합니다.
@Configuration
@PropertySource("classpath:com/foo/my-production.properties")
public class AppConfig {
@Autowired
private Environment env;
public void someMethod() {
String prop = env.getProperty("my.prop.name");
...
}
내가 직접 Java.util.properties로 주입하는 방법을 볼 수 없습니다. 그러나 래퍼 (wrapper) 역할을하는이 주석을 사용하는 클래스를 생성하고 그런 식으로 속성을 빌드 할 수 있습니다.
xml 구성을 사용하여 직접 속성을 주입하는 방법도 있습니다. 컨텍스트 XML이
<util:properties id="myProps" location="classpath:META-INF/spring/conf/myProps.properties"/>
가지고 있으며, 자바 클래스는
@javax.annotation.Resource
private Properties myProps;
짜잔를 사용합니다! 로드됩니다. Spring은 xml의 'id'속성을 사용하여 코드에서 변수 이름에 바인딩합니다.
오래된 주제이지만 기본적인 해결책이 있습니다.
@Configuration
public class MyConfig {
@Bean
public Properties myPropertyBean() {
Properties properties = new Properties();
properties.load(...);
return properties;
}
}
은 PropertiesFactoryBean
이라고 선언합니다.
@Bean
public PropertiesFactoryBean mailProperties() {
PropertiesFactoryBean bean = new PropertiesFactoryBean();
bean.setLocation(new ClassPathResource("mail.properties"));
return bean;
}
레거시 코드는 자바 설정에 그 변환 설정
<bean id="mailConfiguration" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="location" value="classpath:mail.properties"/>
</bean>
위 그림과 같이 매우 간단합니다 다음했다.
으로 확인해 주셔서 감사합니다. – vikingsteve
응용 프로그램입니다.YML :
root-something:
my-properties:
key1: val1
key2: val2
귀하의 형태 보증 된 POJO :
import java.util.Properties;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "root-something")
public class RootSomethingPojo {
private Properties myProperties;
컨테이너 구성 :이 myProperties
필드에 직접 키 - 값 쌍을 삽입합니다
@Configuration
@EnableConfigurationProperties({ RootSomethingPojo .class })
public class MySpringConfiguration {
.
감사합니다.하지만 xml 파일없이 Spring JavaConfig 만 사용하여이 결과를 얻는 방법에 관심이 있습니다. – Roxana
@Roxana oops. 내 게시물을 수정했습니다. – jacobhyphenated
답변 해 주셔서 감사합니다. 나는 분명히 Properties 필드가 필요한 특별한 상황이있다. 래퍼로 당신의 생각을 염두에 두겠다. 그러나 더 간단한 해결책이 없는지 궁금하다 ... :) – Roxana