Tomcat이 스프링 부트 응용 프로그램 속성을 읽지 않음
저는 스프링/자바에 온 지 얼마 안 되어 직장에서 하는 프로젝트를 위해 스프링 부츠를 체크하고 있습니다.가이드를 따라다니다가 드디어 (세미)데이터 액세스용 웹 어플리케이션 MVC+JPA가 나왔습니다.Jar 방식으로 앱을 배포하면 모든 것이 작동합니다.
java -jar build/libs/client.jar
단, 어플리케이션이 Tomcat(v7.0.40)에 도입되기 때문에 프로젝트에서 워파일을 작성해야 합니다.저는 spring.io 사이트의 전쟁 가이드로 변환된 항아리를 팔로우했는데 문제가 생겼습니다.application.properties 파일이 로드되지 않은 것 같습니다.다음은 중요한 코드 스니펫입니다.
src/main/java/hello/그리팅 컨트롤러:
@Controller
@Configuration
public class GreetingController {
@Value("${app.username}")
private String username;
@RequestMapping("/greeting")
public String greeting(@RequestParam(value="name", required=false, defaultValue="World") String name, Model model) {
model.addAttribute("name", name);
model.addAttribute("username", username);
return "greeting";
}
}
src/main/java/hello/Application.자바
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
src/main/java/hello/HelloWebXml.java
public class HelloWebXml extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
src/main/main/application.properties
app.username=foo
완성도를 높이기 위해 build.gradle은 다음과 같습니다.
buildscript {
repositories {
maven { url "http://repo.spring.io/libs-snapshot" }
mavenLocal()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:0.5.0.M6")
}
}
apply plugin: 'java'
apply plugin: 'eclipse-wtp'
apply plugin: 'idea'
apply plugin: 'spring-boot'
apply plugin: 'war'
war {
baseName = 'client'
version = '0.1.0'
}
repositories {
mavenCentral()
maven { url "http://repo.spring.io/libs-snapshot" }
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web:0.5.0.M6")
compile("org.thymeleaf:thymeleaf-spring3:2.0.16")
testCompile("junit:junit:4.11")
}
task wrapper(type: Wrapper) {
gradleVersion = '1.8'
}
어플리케이션을 만듭니다.
gradle clean build
Tomcat에서 전쟁을 드롭하고 로그를 테일아웃하여 다음을 확인합니다.
SEVERE: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]
.StandardHost[localhost].StandardContext[/client]]
...
...
...
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating the bean
with name 'greetingController': Injection of autowired dependencies failed; nested exception
is java.lang.IllegalArgumentException: Could not resolve placeholder 'app.username' in string
value "${app.username}"
...
...
...
이미 말했듯이 jar를 통해 실행할 때는 동작하지만 Tomcat에 전개할 때는 동작하지 않습니다.도 그 속을 요.$TOMCAT_HOME/webapps/client/WEB-INF/classes
'이렇게 하다'가 보이는데요.application.properties
파일이에요. 그래서 수업 경로에 있어야 할 것 같아요."Tomcat" "Tomcat" "Tomcat" "Tomcat?"모든 것을 검색해 봤지만, 아무도 이 문제를 가지고 있지 않은 것 같기 때문에, 단지 내가 잘못 설정했을 뿐인지 어떤지는 잘 모르겠습니다.
잘 부탁드립니다.
다음 조언에 따르세요.http://blog.codeleak.pl/2013/11/how-to-propertysource-annotations-in.html
시험:
@PropertySources(value = {@PropertySource("classpath:application.properties")})
붐소스를 뿌려서 이긴다.
는, 「」, 「」, 「」, 「」를 입니다.@Value
내の ationの @Configuration
class. @PropertySource의 JavaDoc에서 다음을 수행합니다.
${을(를) 해결하려면<bean> 정의 또는 PropertySource의 속성을 사용하는 @Value 주석의 자리 표시자}. PropertySourcesPlaceholderConfigr을 등록해야 합니다.이 문제는 XML에서 <context:property-placeholder>를 사용하는 경우 자동으로 발생하지만 @Configuration 클래스를 사용하는 경우 정적 @Bean 메서드를 사용하여 명시적으로 등록해야 합니다.
:에 다음 합니다.@Configuration
링크:
@Bean
public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
이 에서는 '', '보다', '보다', '보다', '보다', '이'는 '이'를 이동시키는 것이 더 .@Configuration
의 GreetingController
에서 class('설정로,Application
수업시간. 그 이후로Application
에는 래래 class class class any any any any any가 포함되어 않습니다.@Value
해야 합니다.PropertySourcesPlaceholderConfigurer
bean.bean.contract.
저는 같은 문제를 찾아 여기에 왔습니다.application.properties는 스프링 부트애플리케이션이 Tomcat 내부에서 전쟁 상태로 실행될 때 로드되지 않지만 내장된 Tomcat과 함께 실행할 때는 정상적으로 동작하고 있었습니다.이 문제는 파일명에 있는 것으로 판명되었습니다.Tomcat에서 실행할 때 application.properties 대신 Application.properties를 사용했습니다.대소문자를 구분하는 것처럼 보입니다.누군가 나와 같은 바보 같은 실수를 저질렀을 때 여기에 놓으십시오.
2015-09-10 14:42:13,982 DEBUG os.s.b.c.Config File Application Listener [컨테이너 백그라운드 프로세서 [Standard Engine [Catalina]]]건너뛴 구성 파일 'file:.config/application.xml' 리소스를 찾을 수 없습니다. 2015-09-10 14:42:13,982 DEBUG os.s.b.c.c.Config File Application Listener [컨테이너 백그라운드 프로세서 [Standard Engine [Catalina]]]건너뛴 구성 파일 'file:.config/application.yml' 리소스를 찾을 수 없습니다. 2015-09-10 14:42:13,982 DEBUG os.s.b.c.c.Config File Application Listener [컨테이너 백그라운드 프로세서 [Standard Engine [Catalina]]]건너뛴 구성 파일 'file:.config/application.properties' 리소스를 찾을 수 없습니다. 2015-09-10 14:42:13,982 DEBUG os.b.c.c.Config File Application Listener [컨테이너 백그라운드 프로세서 [Standard Engine [Catalina]]]구성 파일 'file:.config/application'을 건너뛰었습니다.yaml' 리소스를 찾을 수 없습니다. 2015-09-10 14:42:13,982 DEBUG os.s.b.c.Config File Application Listener [컨테이너 백그라운드 프로세서 [Standard Engine [Catalina]]]건너뛴 구성 파일 'file:./application.xml' 리소스를 찾을 수 없습니다. 2015-09-10 14:42:13,982 DEBUG os.s.b.c.c.Config File Application Listener [컨테이너 백그라운드 프로세서 [Standard Engine [Catalina]]]건너뛴 구성 파일 'file:./application.yml' 리소스를 찾을 수 없습니다. 2015-09-10 14:42:13,982 DEBUG os.s.b.c.c.Config File Application Listener [컨테이너 백그라운드 프로세서 [Standard Engine [Catalina]]]건너뛴 구성 파일 'file:./application.properties' 리소스를 찾을 수 없습니다. 2015-09-10 14:42:13,982 DEBUG os.s.b.c.c.Config File Application Listener [컨테이너 백그라운드 프로세서 [Standard Engine [Catalina]]]구성 파일 'file:./application'을 건너뛰었습니다.yaml' 리소스를 찾을 수 없습니다. 2015-09-10 14:42:13,982 DEBUG os.s.b.c.Config File Application Listener [컨테이너 백그라운드 프로세서 [Standard Engine [Catalina]]]건너뛴 구성 파일 'classpath:/config/application.xml' 리소스를 찾을 수 없습니다. 2015-09-10 14:42:13,982 DEBUG os.b.c.c.Config File Application Listener [컨테이너 백그라운드 프로세서 [Standard Engine [Catalina]]]건너뛴 구성 파일 'classpath:/config/application.yml' 리소스를 찾을 수 없습니다. 2015-09-10 14:42:13,982 DEBUG os.b.c.c.Config File Application Listener [컨테이너 백그라운드 프로세서 [Standard Engine [Catalina]]]건너뛴 구성 파일 'classpath:/config/application.properties' 리소스를 찾을 수 없습니다. 2015-09-10 14:42:13,982 DEBUG os.b.c.c.Config File Application Listener [컨테이너 백그라운드 프로세서 [Standard Engine [Catalina]]]건너뛴 구성 파일 'classpath:/config/application.yaml' 리소스를 찾을 수 없습니다. 2015-09-10 14:42:13,982 DEBUG os.s.b.c.c.Config File Application Listener [컨테이너 백그라운드 프로세서 [Standard Engine [Catalina]]]건너뛴 구성 파일 'classpath:/application.xml' 리소스를 찾을 수 없습니다. 2015-09-10 14:42:13,982 DEBUG os.s.b.c.c.Config File Application Listener [컨테이너 백그라운드 프로세서 [Standard Engine [Catalina]]]건너뛴 구성 파일 'classpath:/application.yml' 리소스를 찾을 수 없습니다. 2015-09-10 14:42:13,982 DEBUG os.s.b.c.c.Config File Application Listener [컨테이너 백그라운드 프로세서 [Standard Engine [Catalina]]]건너뛴 구성 파일 'classpath:/application.properties' 리소스를 찾을 수 없습니다. 2015-09-10 14:42:13,982 DEBUG os.s.b.c.c.Config File Application Listener [컨테이너 백그라운드 프로세서 [Standard Engine [Catalina]]]건너뛴 구성 파일 'classpath:/application.yaml' 리소스를 찾을 수 없습니다.
디폴트 네이밍 '애플리케이션'을 변경하는 분들을 위해서라고 생각합니다.예를 들어 [properties, servicel, etc]를 "service"로 설정합니다.[properties, snapl 등]), 다음과 같이 build.gradle 태스크에 추가할 수 있습니다.
bootRun {
systemProperties = [
'spring.config.name':'service'
]
}
언급URL : https://stackoverflow.com/questions/20667653/tomcat-not-reading-spring-boot-application-properties
'sourcetip' 카테고리의 다른 글
Wordpress 용어 ID로 분류법 이름 가져오기 (0) | 2023.02.13 |
---|---|
캔 각도JS ng-Keyup 패스는 어떤 키를 눌렀습니까? (0) | 2023.02.09 |
React Native를 사용하여 상태 표시줄 숨기기 (0) | 2023.02.09 |
html 양식 데이터를 사용하여 JSON 개체를 보내는 방법 (0) | 2023.02.09 |
Spring Boot 의존관계에서 application.properties를 상속합니다. (0) | 2023.02.09 |