我对spring / java相当陌生,并且一直在为我正在工作的项目检查spring-
boot。我一直在遵循指南,最后有一个(半)运行中的Web应用程序MVC + JPA用于数据访问。当我通过Jar方法部署应用程序时,一切正常:
java -jar build/libs/client.jar
但是,我们的应用程序最终将部署到Tomcat(v7.0.40),因此我需要从项目中创建一个war文件。我已经在spring.io网站上遵循了将jars转换为war的指南,并遇到了问题。看来它没有加载application.properties文件。以下是重要的代码段:
src / main / java / hello / GreetingController:
@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.java
@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 / resources / 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不加载它?我尝试遍历所有内容,但似乎没有其他人遇到此问题,因此我不确定是否只是我配置不正确的内容或什么。
提前致谢。
遵循这些人的建议:http : //blog.codeleak.pl/2013/11/how-to-propertysource-
annotations-in.html
尝试:
@PropertySources(value = {@PropertySource("classpath:application.properties")})
然后用酱油取胜。
src/main/resources/application.properti 为了完整起见,这里是build.gradle: 我构建应用程序:
我正在开发一个Spring Boot应用程序,我使用application.properties配置db连接、服务器端口等。 例如,如何在application.properties中实现以下XML配置
我在将spring boot应用程序部署到tomcat时遇到了问题,尽管在IDE中工作得很好。我按照https://docs.spring.io/spring-boot/docs/current/reference/html/howto-tegratic-deployment.html中的说明进行了操作 更详细的结构: mvn clear包给出错误:
我正在尝试在Tomcat服务器上部署SpringBoot2应用程序。我已经完成了在多个文档中发现的3个步骤,分别是: 从SpringBootServletilizer扩展 我遇到的问题是,似乎没有使用放置在上的文件(如果我以独立的方式运行应用程序,该文件会起作用)。无论我在,应用程序始终尝试从http://localhost:8888 17:35:54.193[localhost-starStop
我正在学习Spring boot application,并且有使用xml和java配置的Spring应用程序的经验。 我使用的应用程序具有包含UI、服务和DAO的代码基体系结构。所有这些组件都有单独的上下文文件,即。web-applicationcontext.xml或application-servlet-context.xml、service-context.xml和data-context
我有一个spring boot项目,当我从2015.3 IDE运行它时,它编译并运行良好,但从2016.1运行时,它在启动时崩溃,但这是因为配置似乎被破坏了。我的发现如下: 似乎从ide中可以看到应用程序。属性文件不受尊重,我可以在应用程序日志中看到未设置配置文件,而在上述文件中实际设置了活动配置文件。 我可以毫无问题地重建项目。 如果从命令行调用,编译后的jar可以工作。 应用程序。属性位于sr