我在tomcat 8中的外部vm中部署了spring boot应用程序。但是,当我尝试加载相同的时候。我抛出HTTP 404(资源不可用)。以下是catalina.out文件的内容
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.controller.Application]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/application.properties]
我该怎么做才能解决这个问题。我是春季靴子的新手。请帮忙。添加application.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.boot.orm.jpa.EntityScan;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.data.rest.webmvc.config.RepositoryRestMvcConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@Configuration
@ComponentScan(basePackages="com.abc")
@EnableJpaRepositories("com.abc.repository")
@Import(RepositoryRestMvcConfiguration.class)
@EnableAutoConfiguration
@PropertySource("application.properties")
@EntityScan("com.abc.pojo")
public class Application extends SpringBootServletInitializer {
@Autowired
private LdapDAO ldapDao;
@Autowired
private HoursService hoursService;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
谢谢, Poorna。
答案 0 :(得分:0)
Poorna,
基于SpringBoot指定的加载顺序和位置:
Spring Boot解析外部配置文件,例如" application.properties"或" application.yml"按以下顺序:
classpath root
当前目录
classpath / config软件包
/ config当前目录的子目录。
根据此信息,您的application.properties文件应位于类路径中的/ config目录中。因此,如果您将它放在WEB-INF / classes中,它将成为类路径的一部分,则应将其移至:
/WEB-INF/classes/config/application.properties。
此外,如果这没有解决您的问题,请检查@PropertySource
标记。由于您希望通过类路径加载application.properties,因此通常将“classpath:”添加到该位置,如:
@PropertySource("classpath:application.properties")
这应该可行,但如果它没有尝试添加'配置'来自文件名的路径:
@PropertySource("classpath:config/application.properties")
此处还出现了一些相关信息:Tomcat Not reading Spring-Boot Application Properties。除了我已经描述过的最相关的一点是Tomcat可以区分大小写。
确保您的属性文件名为: application.properties 且不 Application.properties