Yu Chen
Yu Chen

Reputation: 7460

Spring Boot not recognizing application.properties file

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: enter image description here

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?

Upvotes: 29

Views: 155438

Answers (10)

Luca Pisoni
Luca Pisoni

Reputation: 465

In my case the problem was that the annotation was in the Dao class, which was downstream of the controller. This class was instantiated with the word "new" and consequently did not apply @Values ​​correctly because the new instantiation occurred outside the working context of Spring Boot.

I found the solution thanks to a topic similar to this one of which i attach the reference.

The solution consists in making the instances downstream of the controller local, using the @Autowired keywork in the constructor, and avoiding using the "new" keyword. This ensures that the @Values ​​point to the same instance used. I attach an example:

@RestController
@RequestMapping("/form")
public class FormController {

    private final FormService formService;
    
    @Autowired
    public FormController(FormService formService) {
        this.formService = formService;
    }

The service:

@Service
public class FormService implements IFormService {

    private final FormDao formDao;

    @Autowired
    public FormService(FeedbackFormDao formDao) {
        this.formDao = formDao;
    }

and finally the DAO (the problem was here in my case):

@Repository
public class FormDao {

    @Value("${google.app.name}")
    public String appName;

    @Value("${google.credential.file}")
    public String credentialFile;

This was the solution for me.

Upvotes: 0

m m
m m

Reputation: 1

For (very late) upgrades from spring boot 1.x to 2.x:

Use additional directory locations containing application.properties additional to resources/application.properties

--spring.config.additional-location=.../

instead of spring boot 1.x - which was more flexible with filenames and read both resources/application.properties and spring.config.location:

--spring.config.location=file:/...\myapplication.properties

Spring boot 2.x still recognices spring.config.location, but it is no longer additional, see https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide#configuration-location and https://docs.spring.io/spring-boot/docs/2.1.9.RELEASE/reference/html/boot-features-external-config.html

Upvotes: 0

Anant
Anant

Reputation: 271

I'll tell you what worked for me. I was loading JPA dependency ahead of SpringBoot dependency, just switched that around and it voila. Try to disable/change order of the dependencies in pom.xml .

Upvotes: -1

SkyWalker
SkyWalker

Reputation: 29150

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.

  1. Go to your project folder where pom.xml is exists.

  2. You have some errors and warning on pom.xml. I have clarified all.

  3. Open command prompt and Run mvn clean

  4. Run mvn clean install

  5. At last mvn spring-boot:run

Then in browser, I run http://localhost:8080/

It opens the project successfully. I have also searched other pages also opened successfully.

First page looks like below http://localhost:8080/

enter image description here

All Review pages look 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>

Upvotes: 45

JoCee
JoCee

Reputation: 50

I ran into something similar and I solved it by specifically adding my appliation.properties file to the pom.xml as seen here: https://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory.html

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <targetPath>${project.build.outputDirectory}</targetPath>
            <includes>
                <include>application.properties</include>
            </includes>
        </resource>
    </resources>

Upvotes: 0

Braian Coronel
Braian Coronel

Reputation: 22867

A problem may also be that you have the dependency of spring-data-jpa duplicated in a hierarchy of dependencies, so with this you have 2 sets of different profiles for the environments and when running the app the runner is taking a set of unwanted environments.

api("org.springframework.data", "spring-data-jpa", "2.3.4.RELEASE")

So I suggest checking the project modules, if there is more than one definition of the dependency download within a hierarchy. Although it is not necessary to delete the one that reappears or duplicates, it is necessary to comment and uncomment them to re-synchronize and for the spring runner to take the desired set of environments.

  1. Comment dependency
  2. Sync
  3. Uncomment dependency
  4. Sync
  5. Run the app

Gradle stuff

GL

Upvotes: 0

SJX
SJX

Reputation: 1239

You can use also a fixed path.

@PropertySource("file:${C:/Development/workspace/Project/resources/}/application.properties")

Helpful in development process where you want to use different property files.

Upvotes: 0

slartidan
slartidan

Reputation: 21576

Please double-check, that your maven-pom uses this packaging:

<packaging>war</packaging>

If it is set to pom or similar, your IDE might not recognize the "Spring"-nature of your module (happend to me in IntelliJ 2018).

Upvotes: 4

jshcode
jshcode

Reputation: 181

Instead of @EnableAutoConfiguration, use @Configuration as below. Also you will need to fix aws region property as its differing in name between prop file and code - [amazon.dynamodb.region vs amazon.aws.region] - this will throw error once it starts picking up property file after below change..

@Configuration
@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;

Upvotes: 3

AchillesVan
AchillesVan

Reputation: 4356

have tried the following approach?

@Component
@PropertySource("database.properties")
public class DynamoClientMapper { ...}

or

 @Service
 @PropertySource("database.properties")
 public class DynamoClientMapper { ...}

Upvotes: 0

Related Questions