Spring配置文件不从application.properties中读取值

时间:2020-04-07 23:01:49

标签: java spring spring-boot

我的配置文件的开始,路径为src / main / java / {package name} /DataBaseConfiguration.java:

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

    private static final Logger LOGGER = LoggerFactory.getLogger("DataBaseConfiguration.class");

    @Value("${tenantdb.driver.classname}")
    static String tenantDbDriverClassname;

    @Value("${tenantdb.url}")
    static String tenantDbUrl;

    @Value("${tenantdb.username}")
    static String tenantDbUsername;

    @Value("${tenantdb.password}")
    static String tenantDbPassword;

我的application.properties文件,其路径为src / main / resources / application.properties:

tenantdb.driver.classname=org.postgresql.Driver
tenantdb.url=jdbc:postgresql://127.0.0.1:5000/tenant_db
tenantdb.username=tenant_admin_user
tenantdb.password=postgres
tenantdb.connectionpool.initialSize=3
tenantdb.connectionpool.maxActive=25
tenantdb.connectionpool.maxIdle=25
tenantdb.connectionpool.minIdle=1

我正在使用gradle构建项目。我将事物转换为JAR并以$ java -jar / path / to / jar的形式运行JAR。该代码将执行并运行,并记录所有我的打印调试语句。但是,变量的值全为空,即未从属性文件中读取任何内容。

我确保application.properties文件在JAR中。

归档文件完整性检查服务.jar中的文件

META-INF/
META-INF/MANIFEST.MF
BOOT-INF/
BOOT-INF/classes/
BOOT-INF/classes/com/
BOOT-INF/classes/com/agilysys/
BOOT-INF/classes/com/agilysys/analytics/
BOOT-INF/classes/com/agilysys/analytics/integritycheckservice/
BOOT-INF/classes/com/agilysys/analytics/integritycheckservice/CompareData.class
BOOT-INF/classes/com/agilysys/analytics/integritycheckservice/DataBaseConfiguration.class
BOOT-INF/classes/application.properties

(还有其他文件,但我没有在这里全部打印出来。)

有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

@PropertySource不适用于静态变量。摆脱掉static关键字。