스프링 MVC 애플리케이션이 있습니다. Tomcat 7 서버에서 실행됩니다.속성에 액세스 할 수 없습니다.
내 app이 Beans 초기화 프로세스 중에 속성에 액세스 할 수 있도록 props.properties 파일을 만들고 싶습니다.
그래서 나는 한 다음1.Create
<context-param>
<param-name>mainProps</param-name>
<param-value>${catalina.home}/conf/props.properties</param-value>
</context-param>
2.
가 나는 MainCobfig 클래스@Configuration
@PropertySource("classpath:/racoonsoft/wish/properties/props.properties")
@Import({WebConfig.class })
public class MainConfig {
@Autowired
Environment env;
@Value("${db.host}")
static String dbHost;
@Value("${db.name}")
static String dbName;
@Value("${db.login}")
static String dbLogin;
@Value("${db.password}")
static String dbPassword;
@Value("${ozon.login}")
static String ozonLogin;
@Value("${ozon.password}")
static String ozonPassword;
@Value("${ozon.apiurl}")
static String ozonApiUrl;
@Value("${payture.apihost}")
static String paytureApiHost;
@Value("${payture.merchant}")
static String paytureMerchant;
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
@Bean
public ScheduledAnnotationBeanPostProcessor scheduledAnnotationBeanPostProcessor() {
return new ScheduledAnnotationBeanPostProcessor();
}
@Bean
public OzonProcessor apiProcessor() {
return new OzonProcessor(ozonLogin, ozonPassword, ozonApiUrl);
}
@Bean
public PGSQLDataSource pgsqlDataSource() throws Exception{
PGSQLDataSource result = new PGSQLDataSource(dbHost,dbName,5432,dbLogin,dbPassword,"org.postgresql.Driver","jdbc:postgresql:");
result.loadSettings();
if(FacebookController.dbProc==null)
{
FacebookController.dbProc = result;
}
//FacebookController.dbProc = result;
return result;
}
@Bean
public PaytureProcessor paytureProcessor()
{
PaytureProcessor proc = new PaytureProcessor(paytureApiHost,paytureMerchant);
return proc;
}
}
3를 만들어 내 web.xml 파일에 대한 컨텍스트 파라미터 - I props.properties 파일을 만들고/conf 디렉토리에 넣습니다.
내 응용 프로그램을 시작할 때 d idnt 예외 (파일을 찾을 수 없습니다) 던져 - 그래서 내가 속성 파일을 볼 수 beleave. 하지만 빈 초기화 동안 필드 (dbHost, dbLogin 등)는 여전히 null입니다.
속성 파일의 값을 내 필드에 어떻게 넣을 수 있습니까?
도와주세요.
변경했습니다 (문제의 코드 업데이트). 그러나 pgsqlDataSource()가 호출 될 때 null 값을가집니다 ... – user2160696
'@ Value' 주석을 사용하여 주입하는 필드는 ** 정적이 아니어야합니다 **. 정적 필드는 자리 표시 자 프로세서의 대상이 아닙니다. –