[SPRING] 봄 부팅 @Value 속성
SPRING봄 부팅 @Value 속성
스프링 부트 응용 프로그램이 있고 클래스 중 하나에서 @Value를 사용하여 application.properties 파일에서 속성을 참조하려고합니다. 그러나 재산은 해결되지 않습니다. 유사한 게시물을 살펴본 후 제안에 따라 시도했지만 도움이되지 않았습니다. 수업은 다음과 같습니다 :
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class PrintProperty {
@Value("${file.directory}")
private String fileDirectory;
public void print() {
System.out.println(fileDirectory);
}
}
application.properties에 file.directory 속성이 있습니다. 다른 분야도 있습니다.
해결법
-
==============================
1.나는 너와 같은 문제가 있었다. 여기에 내 오류 코드가있다.
나는 너와 같은 문제가 있었다. 여기에 내 오류 코드가있다.
@Component public class GetExprsAndEnvId { @Value("hello") private String Mysecret; public GetExprsAndEnvId() { System.out.println("construct"); } public void print(){ System.out.println(this.Mysecret); } public String getMysecret() { return Mysecret; } public void setMysecret(String mysecret) { Mysecret = mysecret; } }
이것은 문제가되지 않지만 우리는 이것을 다음과 같이 사용할 필요가있다.
@Autowired private GetExprsAndEnvId getExprsAndEnvId;
이건 아니야:
getExprsAndEnvId = new GetExprsAndEnvId();
-
==============================
2.application.properties 파일이 src / main / resources / application.properties 아래에 있는지 확인하십시오. 한 가지 방법이 있습니다. 다음과 같이 @PostConstruct를 추가하십시오.
application.properties 파일이 src / main / resources / application.properties 아래에 있는지 확인하십시오. 한 가지 방법이 있습니다. 다음과 같이 @PostConstruct를 추가하십시오.
샘플 Application.properties
file.directory = somePlaceOverHere
샘플 Java 클래스
@ComponentScan public class PrintProperty { @Value("${file.directory}") private String fileDirectory; @PostConstruct public void print() { System.out.println(fileDirectory); } }
위의 코드는 "somePlaceOverhere"를 출력합니다.
-
==============================
3.언급 할 것이 있습니다. 스프링 부트 버전 1.4.0을 사용했고이 버전 이후로는 다음과 같이 작성할 수 있습니다.
언급 할 것이 있습니다. 스프링 부트 버전 1.4.0을 사용했고이 버전 이후로는 다음과 같이 작성할 수 있습니다.
@Component public class MongoConnection { @Value("${spring.data.mongodb.host}") private String mongoHost; @Value("${spring.data.mongodb.port}") private int mongoPort; @Value("${spring.data.mongodb.database}") private String mongoDB; }
언제든지 수업을 들으십시오.
-
==============================
4.application.properties에서 값을 읽으려면 기본 클래스에 @SpringBootApplication이라는 주석을 달고 @Component 또는 다양한 클래스로 읽는 클래스에 주석을 달기 만하면됩니다. 아래 예제에서는 application.properties에서 값을 읽었으며 웹 서비스가 호출 될 때 제대로 작동합니다. 동일한 코드를 그대로 배포하고 http : // localhost : 8080 / hello에서 액세스하려고하면 키 메시지에 대해 application.properties에 저장 한 값을 가져옵니다.
application.properties에서 값을 읽으려면 기본 클래스에 @SpringBootApplication이라는 주석을 달고 @Component 또는 다양한 클래스로 읽는 클래스에 주석을 달기 만하면됩니다. 아래 예제에서는 application.properties에서 값을 읽었으며 웹 서비스가 호출 될 때 제대로 작동합니다. 동일한 코드를 그대로 배포하고 http : // localhost : 8080 / hello에서 액세스하려고하면 키 메시지에 대해 application.properties에 저장 한 값을 가져옵니다.
package com.example; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class DemoApplication { @Value("${message}") private String message; public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @RequestMapping("/hello") String home() { return message; } }
시도해보고 알려줘.
-
==============================
5.스프링 부트를 사용하고 있기 때문에 @PropertySource 주석을 추가하지 않아 현재 작동하지 않는 유일한 방법이라고 생각합니다.
스프링 부트를 사용하고 있기 때문에 @PropertySource 주석을 추가하지 않아 현재 작동하지 않는 유일한 방법이라고 생각합니다.
그것을 시도하고 귀하의 의견을 알려주십시오. 감사!
@Configuration @ComponentScan @PropertySource("classpath:/application.properties") @EnableAutoConfiguration public class PrintProperty { @Value("${file.directory}") private String fileDirectory; public void print() { System.out.println(fileDirectory); } }
-
==============================
6.OP에 패키지 선언을 포함시키지 않았지만 @SpringBootApplication이나 @ComponentScan이 @Component를 스캔하지 않을 수도 있습니다.
OP에 패키지 선언을 포함시키지 않았지만 @SpringBootApplication이나 @ComponentScan이 @Component를 스캔하지 않을 수도 있습니다.
@ComponentScan Javadoc의 설명은 다음과 같습니다.
ISTR은 이전에 많은 시간을 낭비했고 내 응용 프로그램 클래스를 내 응용 프로그램 패키지 트리에서 가장 높은 패키지로 옮기는 것이 가장 쉽다는 것을 알았습니다.
최근에 값 삽입이 완료되기 전에 속성이 읽히는 문제가 발생했습니다. Jesse의 대답은 @PostConstruct가 삽입 된 값을 읽을 수있는 가장 초기 인 것으로 보이며, 물론 Spring이이를 호출하도록해야합니다.
-
==============================
7.문제는 구성에 정적 PropertySourcesPlaceholderConfigurer Bean 정의가 필요하다는 것입니다. 나는 비 정적 인 것을 가지고 있고 그것이 작동하지 않았기 때문에 강조로 정적이라고 말합니다.
문제는 구성에 정적 PropertySourcesPlaceholderConfigurer Bean 정의가 필요하다는 것입니다. 나는 비 정적 인 것을 가지고 있고 그것이 작동하지 않았기 때문에 강조로 정적이라고 말합니다.
@Bean public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { return new PropertySourcesPlaceholderConfigurer(); }
-
==============================
8.비슷한 문제가 있었고 위의 예는 속성을 읽는 데 도움이되지 않습니다. 아래 링크에서 SpringBoot 응용 프로그램의 application.properties 파일에서 속성 값을 읽는 데 도움이 될 완전한 클래스를 게시했습니다.
비슷한 문제가 있었고 위의 예는 속성을 읽는 데 도움이되지 않습니다. 아래 링크에서 SpringBoot 응용 프로그램의 application.properties 파일에서 속성 값을 읽는 데 도움이 될 완전한 클래스를 게시했습니다.
스프링 부트 - 환경 @Autowired가 NullPointerException을 발생시킵니다.
from https://stackoverflow.com/questions/39047333/spring-boot-value-properties by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄과 잭슨, @ResponseBody를 통해 FAIL_ON_EMPTY_BEANS를 사용 중지하는 방법 (0) | 2019.01.20 |
---|---|
[SPRING] 3.0의 Spring SimpleFormController (0) | 2019.01.20 |
[SPRING] java.lang.ClassNotFoundException : org.springframework.boot.SpringApplication Maven (0) | 2019.01.20 |
[SPRING] Action 클래스의 범위를 Singleton으로 지정할 수 있습니까? (0) | 2019.01.20 |
[SPRING] spring3-annotation-JdbcDaoSupport (0) | 2019.01.20 |