[SPRING] Spring에서 @PropertyResource로 여러 속성 파일에 액세스하기
SPRINGSpring에서 @PropertyResource로 여러 속성 파일에 액세스하기
Spring 3.1에서 새로운 @PropertySource 어노테이션을 사용하면 Environment로 여러 속성 파일에 어떻게 접근 할 수 있습니까?
현재 내가 가지고있는 것 :
@Controller
@Configuration
@PropertySource(
name = "props",
value = { "classpath:File1.properties", "classpath:File2.properties" })
public class TestDetailsController {
@Autowired
private Environment env;
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
String file1Name = env.getProperty("file1.name","file1.name not found");
String file2Name = env.getProperty("file2.name","file2.name not found");
System.out.println("file 1: " + file1Name);
System.out.println("file 2: " + file2Name);
return "home";
}
결과는 File1.properties의 올바른 파일 이름이지만 file2.name은 찾을 수 없습니다. File2.properties에 어떻게 액세스 할 수 있습니까?
해결법
-
==============================
1.두 가지 접근 방식이 있습니다. 첫 번째는 applicationContext.xml에서 PropertyPlaceHolder를 사용하는 것입니다. beans-factory-placeholderconfigurer
두 가지 접근 방식이 있습니다. 첫 번째는 applicationContext.xml에서 PropertyPlaceHolder를 사용하는 것입니다. beans-factory-placeholderconfigurer
<context:property-placeholder location="classpath*:META-INF/spring/properties/*.properties"/>
추가 할 네임 스페이스는 xmlns : context = "http://www.springframework.org/schema/context"입니다.
컨트롤러의 String 변수에 키를 직접 액세스하려면 다음을 사용하십시오.
@Value("${some.key}") private String valueOfThatKey;
두 번째 방법은 applicationContext.xml에서 util : 속성을 사용하는 것입니다.
<util:properties id="fileA" location="classpath:META-INF/properties/a.properties"/> <util:properties id="fileB" location="classpath:META-INF/properties/b.properties"/>
namesapce xmlns : util = "http://www.springframework.org/schema/util"schemaLocations 사용 : http://www.springframework.org/schema/util http://www.springframework.org/schema/util /spring-util-3.0.xsd
그런 다음 귀하의 컨트롤러 :
@Resource(name="fileA") private Properties propertyA; @Resource(name="fileB") private Properties propertyB;
파일에서 값을 원하면 getProperty (String key) 메소드를 사용하십시오.
-
==============================
2.Spring 4.x로 마이그레이션 할 수 있다면 새로운 @PropertySources 주석으로 문제가 해결되었습니다.
Spring 4.x로 마이그레이션 할 수 있다면 새로운 @PropertySources 주석으로 문제가 해결되었습니다.
@PropertySources({ @PropertySource("/file1.properties"), @PropertySource("/file2.properties") })
-
==============================
3.Spring에서는 여러 개의 속성에 액세스 할 수 있습니다.
Spring에서는 여러 개의 속성에 액세스 할 수 있습니다.
@PropertySource의 예,
@PropertySource({ "classpath:hibernateCustom.properties", "classpath:hikari.properties" })
@PropertySources의 예,
@PropertySources({ @PropertySource("classpath:hibernateCustom.properties"), @PropertySource("classpath:hikari.properties") })
속성 경로를 지정하면 일반적으로 환경 인스턴스를 통해 액세스 할 수 있습니다.
내 앱 컨텍스트를 구성하기 위해 속성 값을 사용하면서 컴파일 오류가 발생했습니다. 나는 웹을 통해 찾은 모든 것을 시도했지만 그들은 나를 위해 일하지 않았다!
아래처럼 Spring 컨텍스트를 설정할 때까지,
applicationContext.setServletContext(servletContext); applicationContext.refresh();
예
public class SpringWebAppInitializer implements WebApplicationInitializer{ @Override public void onStartup(ServletContext servletContext) throws ServletException { // Create the 'root' Spring application context AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext(); // register config class i.e. where i used @PropertySource applicationContext.register(AppContextConfig.class); // below 2 are added to make @PropertySources/ multi properties file to work applicationContext.setServletContext(servletContext); applicationContext.refresh(); // other config } }
귀하의 정보는 Spring 4.3을 사용하고 있습니다.
from https://stackoverflow.com/questions/14505078/accessing-multiple-property-files-with-propertyresource-in-spring by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] GWT 스프링 보안 통합 (PURE GWT, JSP 없음) (0) | 2019.01.16 |
---|---|
[SPRING] 어떤 리턴 타입은 @RequestMapping 메소드의 spring mvc에서 사용합니까? (0) | 2019.01.16 |
[SPRING] Spring 애플리케이션에서 CXF를 사용하여 JAX-RS 리소스를 자동 검색 (0) | 2019.01.16 |
[SPRING] 종속성 삽입 서블릿 수신기 (0) | 2019.01.16 |
[SPRING] 보안 된 엔드 포인트에만 스프링 보안 필터를 적용하는 방법은 무엇입니까? (0) | 2019.01.16 |