java - Spring 属性未加载

标签 java spring spring-boot

我是第一次使用 Spring Boot,并且也使用 xml less 配置。

尝试在我的 bean 类中添加属性文件值,但得到 null 值。这是我的代码:

配置.java:

import java.sql.SQLException;

import javax.annotation.PostConstruct;
import javax.sql.DataSource;

import oracle.jdbc.pool.OracleDataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.apache.commons.dbcp2.BasicDataSource;
import org.springframework.stereotype.Component;

@Configuration
@ComponentScan
@PropertySource("classpath:application.properties")
public class Config {

    @Autowired
    private static SpringAppProp springAppProp;





    @Value("${url}")
    private static String url;

    @Value("${driverClassName}")
    private static String driverClassName;

    @Value("${username}")
    private static String username;

    @Value("${password}")
    private static String password;

    @Value("${initialSize}")
    private static int initialSize;

    @Value("${maxActive}")
    private static int maxActive;

    @Value("${dbPort}")
    private static int dbPort;

    @Value("${dbServiceName}")
    private static String dbServiceName;

    @Value("${dbServer}")
    private static String dbServer;



    @Bean
    public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }
    @Bean(name = "DataSource")
    public static BasicDataSource dataSource() throws SQLException {
        BasicDataSource basicDataSource = new BasicDataSource();
        basicDataSource.setUrl(url);
        basicDataSource.setDriverClassName(driverClassName);
        basicDataSource.setInitialSize(initialSize);
        basicDataSource.setMaxTotal(maxActive);
        basicDataSource.setMaxIdle(5);
        basicDataSource.setMinIdle(0);
        basicDataSource.setMaxWaitMillis(15000);
        return basicDataSource;
      }

}

应用程序属性:

server.port=8080
driverClassName=oracle.jdbc.driver.OracleDriver
username=XXXX
password=XXXX
initialSize=10
maxActive=20
dbPort=XXX
dbServiceName=xxxx
dbServer=xxxxxx
url=jdbc:oracle:thin@//xxxxx

有人可以看到并让我知道我在这里做错了什么吗..

最佳答案

删除static来自您用 Value 注释的字段:

@Value("${url}")
private String url;

@Value("${driverClassName}")
private String driverClassName;

由于您使用的是 Spring Boot,因此不需要 @PropertySource .

更新 正如 M. Deinum 所说,最好完全放弃配置类并使用 spring.datasource.*您的 application.properties 中的属性.

关于java - Spring 属性未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36851825/

相关文章:

Java比较两个字母

java - 使用 Numbus L&F 设置 JTree 选择背景

Java 1.7 - 通用错误语法

java - 以特定方式读写文件

java - 当配置设置为另一个时,Idea + Spring Boot + Tomcat 在端口 8080 上启动

java - 发布数据时附加 URL

java - Spring boot多模块项目编译错误: cannot find symbol

java - Hibernate 中的 Longvarchar

java - 如何使用 Rest api 响应下载 html 页面

java - 为什么 ResponseEntity 主体返回 null?