Spring Boot无法识别application.properties文件 [英] Spring Boot not recognizing application.properties file
问题描述
我正在尝试使用Spring Boot配置DynamoDb客户端,并将端点和配置信息放在我的resources/application.properties文件中.但是,Spring Boot似乎并没有选择这些属性.它确实提取了我存储在同一文件中的"server.default"键,因此肯定可以识别文件本身.
这是我的application.properties文件,以及我正在尝试将属性加载到( DynamoDBClientMapper )的类:
amazon.dynamodb.endpoint = http://localhost:8000/amazon.dynamodb.region = us-west-1amazon.aws.accesskey =键amazon.aws.secretkey =键2server.port = 8080
这是我的项目结构:
这是我要加载属性的相关类.我尝试了使用新属性文件以及 EnableAutoConfiguration 的 @PropertySource 批注,但是都没有注册属性文件.
@PropertySource("database.properties")公共类DynamoClientMapper {@Value("$ {amazon.dynamodb.endpoint}")私有字符串amazonDynamoDBEndpoint;@Value("$ {amazon.aws.accesskey}")私有字符串amazonAWSAccessKey;@Value("$ {amazon.aws.secretkey}")私有字符串amazonAWSSecretKey;@Value("$ {amazon.aws.region}")私有String amazonAWSRegion;
这是我的App.java:
@SpringBootApplication@EnableAutoConfiguration(排除= {DataSourceAutoConfiguration.class})公共类应用{//私有静态最终Logger logger = Logger.getLogger(App.class.toString());公共静态void main(String [] args){SpringApplication.run(App.class,args);}}
这是堆栈跟踪:
org.springframework.beans.factory.BeanCreationException:在文件[C:\ Users \ ychen4 \ Desktop \ DiningApplication \ target \ classes \ main \ java \ com \ dining中创建名称为'dynamoClientMapper'的bean时出错\ dao \ DynamoClientMapper.class]:实例化bean失败;嵌套的异常是org.springframework.beans.BeanInstantiationException:无法实例化[main.java.com.dining.dao.DynamoClientMapper $$ EnhancerBySpringCGLIB $$ f4ba10ad]:构造函数引发了异常;嵌套异常为java.lang.IllegalArgumentException:端点不能为null在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1155)〜[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1099)〜[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)〜[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)〜[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]在org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:306)〜[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)〜[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)〜[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)〜[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]在org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)〜[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]在org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866)〜[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)〜[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]在org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)〜[spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]在org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737)上[spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]在org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370)上[spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]在org.springframework.boot.SpringApplication.run(SpringApplication.java:314)上[spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]在org.springframework.boot.SpringApplication.run(SpringApplication.java:1162)[spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]在org.springframework.boot.SpringApplication.run(SpringApplication.java:1151)[spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]在main.java.com.dining.App.main(App.java:18)[classes/:na]在sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)处〜[na:1.8.0_121]在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)〜[na:1.8.0_121]在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)〜[na:1.8.0_121]在java.lang.reflect.Method.invoke(Method.java:498)〜[na:1.8.0_121]在org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)[spring-boot-devtools-1.5.2.RELEASE.jar:1.5.2.RELEASE]引起原因:org.springframework.beans.BeanInstantiationException:无法实例化[main.java.com.dining.dao.DynamoClientMapper $$ EnhancerBySpringCGLIB $$ f4ba10ad]:构造函数引发了异常;嵌套异常为java.lang.IllegalArgumentException:端点不能为null在org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:154)〜[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]在org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:89)〜[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1147)〜[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]...省略了22个通用框架原因:java.lang.IllegalArgumentException:端点不能为null在com.amazonaws.util.RuntimeHttpUtils.toUri(RuntimeHttpUtils.java:182)〜[aws-java-sdk-core-1.11.125.jar:na]在com.amazonaws.util.RuntimeHttpUtils.toUri(RuntimeHttpUtils.java:171)〜[aws-java-sdk-core-1.11.125.jar:na]在com.amazonaws.AmazonWebServiceClient.toURI(AmazonWebServiceClient.java:238)〜[aws-java-sdk-core-1.11.125.jar:na]在com.amazonaws.AmazonWebServiceClient.setEndpoint(AmazonWebServiceClient.java:228)〜[aws-java-sdk-core-1.11.125.jar:na]在com.amazonaws.client.builder.AwsClientBuilder.setRegion(AwsClientBuilder.java:362)〜[aws-java-sdk-core-1.11.125.jar:na]在com.amazonaws.client.builder.AwsClientBuilder.configureMutableProperties(AwsClientBuilder.java:337)〜[aws-java-sdk-core-1.11.125.jar:na]在com.amazonaws.client.builder.AwsSyncClientBuilder.build(AwsSyncClientBuilder.java:46)〜[aws-java-sdk-core-1.11.125.jar:na]在main.java.com.dining.dao.DynamoClientMapper.< init>(DynamoClientMapper.java:32)〜[classes/:na]在main.java.com.dining.dao.DynamoClientMapper $$ EnhancerBySpringCGLIB $$ f4ba10ad.< init>(< generate>)〜[classes/:na]在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)〜[na:1.8.0_121]在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)〜[na:1.8.0_121]在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)〜[na:1.8.0_121]在java.lang.reflect.Constructor.newInstance(Constructor.java:423)〜[na:1.8.0_121]在org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:142)〜[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]...省略了24个通用框架
我尝试制作另一个单独的database.properties文件,但是Spring Boot也不认识到这一点.我在做什么错了?
您可以尝试在pom.xml文件的build部分中定义资源标签.设置资源目录的路径,该目录为 application.properties
< build><资源><资源><目录>资源</目录>< targetPath> $ {project.build.outputDirectory}</targetPath>< includes>< include> application.properties</include></includes></resource></resources></build>
资源链接:
查看所有页面,如下所示: http://localhost:8080/api/reviews
[{"id":1,"userName":"ychennay","reviewText":这家餐厅很棒!"},{"id":2,"userName":"david","reviewText":这家餐厅还行!},{" id:3," userName:" ben," reviewText:"这家餐厅平庸!},{" id:4," userName:" leon," reviewText:"这家餐厅太糟糕了!},{" id:5," userName:" lawrence," reviewText:"这里餐厅令人困惑!}]
因此替换您的pom.xml
<项目xmlns ="http://maven.apache.org/POM/4.0.0" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation ="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">< modelVersion> 4.0.0</modelVersion>< groupId> com.diningapp</groupId>< artifactId>餐厅</artifactId>< version> 0.0.1-SNAPSHOT</version>< packaging> war</packaging><属性>< jackson.version> 2.7.5</jackson.version>< spring-version> 4.3.7.发布</spring-version>< dynamodb-local.port> 8000</dynamodb-local.port>< dynamodb-local.endpoint> http://localhost:$ {dynamodb-local.port}</dynamodb-local.endpoint>< spring-boot-version> 1.5.2.RELEASE</spring-boot-version>< aws-sdk-java-version> 1.11.124</aws-sdk-java-version>< project.build.sourceEncoding> UTF-8</project.build.sourceEncoding><!-对于UTF-8支持->< project.reporting.outputEncoding> UTF-8</project.reporting.outputEncoding><!-对于UTF-8支持-></properties>< build>< sourceDirectory> src</sourceDirectory>< plugins>< plugin>< artifactId> maven-compiler-plugin</artifactId>< version> 3.5.1</version><配置>< source> 1.7</source><!-使用了java7->< target> 1.7</target><!-使用了java7-></configuration></plugin>< plugin>< groupId> org.springframework.boot</groupId>< artifactId> spring-boot-maven-plugin</artifactId>< version> $ {spring-boot-version}</version><执行><执行><目标>< goal>重新包装</goal></goals></execution></executions></plugin>< plugin>< artifactId> maven-war-plugin</artifactId>< version> 3.0.0</version><配置>< warSourceDirectory> WebContent</warSourceDirectory></configuration></plugin></plugins></build><存储库><存储库>dynamodb-local-oregon</id>< name> DynamoDB本地发行版存储库</name>< url> https://s3-us-west-2.amazonaws.com/dynamodb-local/release</url></存储库></存储库><依赖关系><依赖关系>< groupId> org.springframework.data</groupId>< artifactId> spring-data-releasetrain</artifactId>< Hopper-SR10</version>< type> pom</type><!-< scope> import</scope>->< scope>提供的</scope></dependency><依赖关系>< groupId> org.springframework.boot</groupId>< artifactId> spring-boot-devtools</artifactId>< version> $ {spring-boot-version}</version><!-您错过了添加此版本的时间->< optional> true</optional></dependency><依赖关系>< groupId> org.springframework.boot</groupId>< artifactId>弹簧启动配置处理器</artifactId>< version> $ {spring-boot-version}</version><!-您错过了添加此版本的时间->< optional> true</optional></dependency>< ;!-https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web-><依赖关系>< groupId> org.springframework.boot</groupId>< artifactId> spring-boot-starter-web</artifactId>< version> $ {spring-boot-version}</version></dependency><依赖关系>< groupId> com.amazonaws</groupId>< artifactId> aws-java-sdk-dynamodb</artifactId>< version> $ {aws-sdk-java-version}</version></dependency><依赖关系>< groupId> com.github.derjust</groupId>< artifactId> spring-data-dynamodb</artifactId>< version> 4.3.1</version></dependency><依赖关系>< groupId> com.amazonaws</groupId>< artifactId> aws-java-sdk-bom</artifactId>< version> $ {aws-sdk-java-version}</version>< type> pom</type><!-< scope> import</scope>->< scope>提供的</scope><!-将导入更改为提供的-></dependency><依赖关系>< groupId> org.springframework.boot</groupId>< artifactId> spring-boot-starter-tomcat</artifactId>< version> $ {spring-boot-version}</version></dependency><依赖关系>< groupId> org.springframework</groupId>< artifactId> spring-context</artifactId>< version> $ {spring-version}</version></dependency><依赖关系>< groupId> org.springframework</groupId>< artifactId> spring-core</artifactId>< version> $ {spring-version}</version></dependency><依赖关系>< groupId> org.springframework</groupId>< artifactId> spring-web</artifactId>< version> $ {spring-version}</version></dependency><依赖关系>< groupId> org.springframework</groupId>< artifactId> spring-webmvc</artifactId>< version> $ {spring-version}</version></dependency><依赖关系>< groupId> jstl</groupId>< artifactId> jstl</artifactId>< version> 1.2</version></dependency><依赖关系>< groupId> org.springframework</groupId>< artifactId> spring-beans//artifactId>< version> $ {spring-version}</version></dependency><依赖关系>< groupId> com.fasterxml.jackson.core</groupId>< artifactId> jackson-databind</artifactId>< version> $ {jackson.version}</version></dependency><!-https://mvnrepository.com/artifact/mysql/mysql-connector-java-><依赖关系>< groupId> mysql</groupId>< artifactId> mysql-connector-java</artifactId>< version> 5.1.38</version><!-您错过了添加此版本的时间-></dependency>< ;!-https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-security-><依赖关系>< groupId> org.springframework.boot</groupId>< artifactId> spring-boot-starter-security</artifactId>< version> $ {spring-boot-version}</version></dependency><依赖关系>< groupId> javax.servlet</groupId>< artifactId> javax.servlet-api</artifactId>< version> 3.0.1</version>< scope>提供的</scope></dependency><依赖关系>< groupId> org.projectlombok</groupId>< artifactId> lombok</artifactId>< version> 1.16.10</version>< scope>提供的</scope></dependency></dependencies></project>
错误和解决方案:
问题1:
[警告] org.springframework.data:spring-data-releasetrain:pom的'dependencies.dependency.scope'必须是以下项之一[提供,编译,运行时,测试,系统],但为导入".@第70行,第18栏
解决方案#1:
< dependency>< groupId> org.springframework.data</groupId>< artifactId> spring-data-releasetrain</artifactId>< Hopper-SR10< version>< type> pom</type><!-< scope> import</scope>->< scope>提供的</scope><!-将导入更改为提供的-></dependency>
问题2:
[错误] org.springframework.boot:spring-boot-devtools:jar的'dependencies.dependency.version'丢失.@ 线73,第19列
解决方案2:
< dependency>< groupId> org.springframework.boot</groupId>< artifactId> spring-boot-devtools</artifactId>< version> $ {spring-boot-version}</version><!-您错过了添加此版本的时间->< optional> true</optional></dependency>
问题3:
[错误] org.springframework.boot:spring-boot-configuration-processor:jar的'dependencies.dependency.version'是丢失的.@第78行,第19列
解决方案#3:
< dependency>< groupId> org.springframework.boot</groupId>< artifactId>弹簧启动配置处理器</artifactId>< version> $ {spring-boot-version}</version><!-您错过了添加此版本的时间->< optional> true</optional></dependency>
问题#4:
[警告] com.amazonaws:aws-java-sdk-bom:pom的'dependencies.dependency.scope'必须为[提供,编译,运行时,测试,系统],但为导入".@第105行,第18列
解决方案#4:
< dependency>< groupId> com.amazonaws</groupId>< artifactId> aws-java-sdk-bom</artifactId>< version> $ {aws-sdk-java-version}</version>< type> pom</type><!-< scope> import</scope>->< scope>提供的</scope><!-将导入更改为提供的-></dependency>
问题5:
[错误] mysql:mysql-connector-java:jar的'dependencies.dependency.version'丢失.@第148行,第19列
解决方案#5:
<!-https://mvnrepository.com/artifact/mysql/mysql-connector-java-><依赖关系>< groupId> mysql</groupId>< artifactId> mysql-connector-java</artifactId>< version> 5.1.38</version><!-您错过了添加此版本的时间-></dependency>
I'm trying to configure a DynamoDb client with Spring Boot, and placed my endpoints and configuration information in my resources/application.properties file. However, Spring Boot does not seem to pick up these properties. It does pick up the "server.default" key that I have stored in the same file, so it is definitely recognizing the the file itself.
Here is my application.properties file and the class I'm trying to load properties into (DynamoDBClientMapper):
amazon.dynamodb.endpoint=http://localhost:8000/
amazon.dynamodb.region=us-west-1
amazon.aws.accesskey=key
amazon.aws.secretkey=key2
server.port=8080
Here is my project structure:
Here is the relevant class I'm trying to load properties into. I tried the @PropertySource annotation with a new properties file, as well as EnableAutoConfiguration, but neither are registering the properties file(s).
@PropertySource("database.properties")
public class DynamoClientMapper {
@Value("${amazon.dynamodb.endpoint}")
private String amazonDynamoDBEndpoint;
@Value("${amazon.aws.accesskey}")
private String amazonAWSAccessKey;
@Value("${amazon.aws.secretkey}")
private String amazonAWSSecretKey;
@Value("${amazon.aws.region}")
private String amazonAWSRegion;
Here is my App.java:
@SpringBootApplication
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
public class App {
// private static final Logger logger = Logger.getLogger(App.class.toString());
public static void main(String[] args){
SpringApplication.run(App.class, args);
}
}
Here is the stack trace:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dynamoClientMapper' defined in file [C:\Users\ychen4\Desktop\DiningApplication\target\classes\main\java\com\dining\dao\DynamoClientMapper.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [main.java.com.dining.dao.DynamoClientMapper$$EnhancerBySpringCGLIB$$f4ba10ad]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: endpoint cannot be null
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1155) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1099) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1162) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1151) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
at main.java.com.dining.App.main(App.java:18) [classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) [spring-boot-devtools-1.5.2.RELEASE.jar:1.5.2.RELEASE]
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [main.java.com.dining.dao.DynamoClientMapper$$EnhancerBySpringCGLIB$$f4ba10ad]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: endpoint cannot be null
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:154) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:89) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1147) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
... 22 common frames omitted
Caused by: java.lang.IllegalArgumentException: endpoint cannot be null
at com.amazonaws.util.RuntimeHttpUtils.toUri(RuntimeHttpUtils.java:182) ~[aws-java-sdk-core-1.11.125.jar:na]
at com.amazonaws.util.RuntimeHttpUtils.toUri(RuntimeHttpUtils.java:171) ~[aws-java-sdk-core-1.11.125.jar:na]
at com.amazonaws.AmazonWebServiceClient.toURI(AmazonWebServiceClient.java:238) ~[aws-java-sdk-core-1.11.125.jar:na]
at com.amazonaws.AmazonWebServiceClient.setEndpoint(AmazonWebServiceClient.java:228) ~[aws-java-sdk-core-1.11.125.jar:na]
at com.amazonaws.client.builder.AwsClientBuilder.setRegion(AwsClientBuilder.java:362) ~[aws-java-sdk-core-1.11.125.jar:na]
at com.amazonaws.client.builder.AwsClientBuilder.configureMutableProperties(AwsClientBuilder.java:337) ~[aws-java-sdk-core-1.11.125.jar:na]
at com.amazonaws.client.builder.AwsSyncClientBuilder.build(AwsSyncClientBuilder.java:46) ~[aws-java-sdk-core-1.11.125.jar:na]
at main.java.com.dining.dao.DynamoClientMapper.<init>(DynamoClientMapper.java:32) ~[classes/:na]
at main.java.com.dining.dao.DynamoClientMapper$$EnhancerBySpringCGLIB$$f4ba10ad.<init>(<generated>) ~[classes/:na]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_121]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_121]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_121]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_121]
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:142) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
... 24 common frames omitted
I've tried making another separate database.properties file , but Spring Boot isn't recognizing that either. What am I doing wrong?
You can make a try to define resources tag in the build section in your pom.xml file. Set path for resource directory where is application.properties
<build>
<resources>
<resource>
<directory>resources</directory>
<targetPath>${project.build.outputDirectory}</targetPath>
<includes>
<include>application.properties</include>
</includes>
</resource>
</resources>
</build>
Resource Link: https://stackoverflow.com/a/30595114/2293534
Another approach:
If you use spring 3.X version, You can add @PropertySource("application.properties")
@Configuration
@PropertySource(value = "classpath:application.properties")
public class ApplicationConfig {
// more configuration ...
}
If you use spring 4 version, you add 2 properties file using new annotation called @PropertySources that allows you to declare repeated @PropertySource annotations:
@PropertySources({
@PropertySource("default.properties"),
@PropertySource("overriding.properties")
})
Details is given here in my another answer: https://stackoverflow.com/a/43659158/2293534
UPDATE#1:
Replace your App.java class with following class
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
//@SpringBootApplication
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(applicationClass);
}
private static Class<Application> applicationClass = Application.class;
}
For java.io.FileNotFoundException:
Use the following
@PropertySource(value = "database.properties", ignoreResourceNotFound = true)
UPDATE#2:
I have followed the following steps to run your application. It runs successfully.
Go to your project folder where pom.xml is exists.
You have some errors and warning on pom.xml. I have clarified all.
Open command prompt and Run
mvn clean
Run
mvn clean install
At last
mvn spring-boot:run
Then in browser, I run "http://localhost:8080/"
It open's the project successfully. I have also searched other pages also opened successfully.
First page looks like below http://localhost:8080/
Review all pages looks like below: http://localhost:8080/api/reviews
[{"id":1,"userName":"ychennay","reviewText":"This restaurant was terrific!"},{"id":2,"userName":"david","reviewText":"This restaurant was okay!"},{"id":3,"userName":"ben","reviewText":"This restaurant was mediocre!"},{"id":4,"userName":"leon","reviewText":"This restaurant was awful!"},{"id":5,"userName":"lawrence","reviewText":"This restaurant was confusing!"}]
So Replace your pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.diningapp</groupId>
<artifactId>Dining</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<jackson.version>2.7.5</jackson.version>
<spring-version>4.3.7.RELEASE</spring-version>
<dynamodb-local.port>8000</dynamodb-local.port>
<dynamodb-local.endpoint>http://localhost:${dynamodb-local.port}</dynamodb-local.endpoint>
<spring-boot-version>1.5.2.RELEASE</spring-boot-version>
<aws-sdk-java-version>1.11.124</aws-sdk-java-version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- For UTF-8 support -->
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!-- For UTF-8 support -->
</properties>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source> <!-- Used java7 -->
<target>1.7</target> <!-- Used java7 -->
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot-version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>dynamodb-local-oregon</id>
<name>DynamoDB Local Release Repository</name>
<url>https://s3-us-west-2.amazonaws.com/dynamodb-local/release</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-releasetrain</artifactId>
<version>Hopper-SR10</version>
<type>pom</type>
<!-- <scope>import</scope> -->
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<version>${spring-boot-version}</version> <!-- You have missed to add this version -->
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>${spring-boot-version}</version> <!-- You have missed to add this version -->
<optional>true</optional>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring-boot-version}</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-dynamodb</artifactId>
<version>${aws-sdk-java-version}</version>
</dependency>
<dependency>
<groupId>com.github.derjust</groupId>
<artifactId>spring-data-dynamodb</artifactId>
<version>4.3.1</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-bom</artifactId>
<version>${aws-sdk-java-version}</version>
<type>pom</type>
<!-- <scope>import</scope> -->
<scope>provided</scope> <!-- changed import to provided -->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>${spring-boot-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version> <!-- You have missed to add this version -->
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>${spring-boot-version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
Errors and solutions:
Issue#1:
[WARNING] 'dependencies.dependency.scope' for org.springframework.data:spring-data-releasetrain:pom must be one of [provided, compile, runtime, test, system] but is 'import'. @ line 70, column 18
Solution#1:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-releasetrain</artifactId>
<version>Hopper-SR10</version>
<type>pom</type>
<!-- <scope>import</scope> -->
<scope>provided</scope> <!-- changed import to provided -->
</dependency>
Issue#2:
[ERROR] 'dependencies.dependency.version' for org.springframework.boot:spring-boot-devtools:jar is missing. @ line 73, column 19
Solution#2:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<version>${spring-boot-version}</version> <!-- You have missed to add this version -->
<optional>true</optional>
</dependency>
Issue#3:
[ERROR] 'dependencies.dependency.version' for org.springframework.boot:spring-boot-configuration-processor:jar is missing. @ line 78, column 19
Solution#3:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>${spring-boot-version}</version> <!-- You have missed to add this version -->
<optional>true</optional>
</dependency>
Issue#4:
[WARNING] 'dependencies.dependency.scope' for com.amazonaws:aws-java-sdk-bom:pom must be one of [provided, compile, runtime, test, system] but is 'import'. @ line 105, column 18
Solution#4:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-bom</artifactId>
<version>${aws-sdk-java-version}</version>
<type>pom</type>
<!-- <scope>import</scope> -->
<scope>provided</scope> <!-- changed import to provided -->
</dependency>
Issue#5:
[ERROR] 'dependencies.dependency.version' for mysql:mysql-connector-java:jar is missing. @ line 148, column 19
Solution#5:
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version> <!-- You have missed to add this version -->
</dependency>
这篇关于Spring Boot无法识别application.properties文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!