【发布时间】:2022-08-19 19:32:14
【问题描述】:
我目前正在 Eclipse IDE 中开发一个带有 Connection 类的 Spring Boot 应用程序,该类需要知道要连接到哪个数据源。我决定通过 @Value 注释让它从 Spring 的 application.properties 中知道这个属性:
@Value(\"${project.datasource}\")
private final DataSource DATA_SOURCE;
其中 DataSource 是一个枚举,表示可能的数据源。但是,在这种方法中,我得到一个“空白最终字段 DATA_SOURCE 可能尚未初始化”错误:
private DBConnection() throws SQLException {
ConnectionConfig config = new ConnectionConfig(DATA_SOURCE);
connection = DriverManager.getConnection(config.getUrl(), config.getUSERNAME(), config.getPASSWORD());
}
插入默认值也不起作用:
@Value(\"${project.datasource:POSTGRE_LOCAL}\")
仍然给出同样的错误。 我尝试为 Eclipse 安装 Spring Tools 4 插件以检查这是否只是 Eclipse 不理解 @Value 注释的含义,但似乎情况并非如此。我该如何解决这个问题?我是否误解了自己的含义?
应用程序属性:
project.datasource = POSTGRE_LOCAL
项目树:
| .classpath
| .gitignore
| .project
| HELP.md
| mvnw
| mvnw.cmd
| pom.xml
|
+---.mvn
| \\---wrapper
| maven-wrapper.jar
| maven-wrapper.properties
|
+---.settings
| org.eclipse.core.resources.prefs
| org.eclipse.jdt.core.prefs
| org.eclipse.m2e.core.prefs
| org.springframework.ide.eclipse.prefs
|
+---src
| +---main
| | +---java
| | | \\---org
| | | \\---ingsw21
| | | \\---backend
| | | +---connection
| | | | DBConnection.java
| | | |
| | | +---controllers
| | | | UserController.java
| | | |
| | | +---DAOs
| | | | DAOUtente.java
| | | |
| | | +---DAOSQL
| | | | DAOSQLUtente.java
| | | |
| | | +---entities
| | | | Utente.java
| | | |
| | | +---enums
| | | | DataSource.java
| | | |
| | | \\---exceptions
| | | BadRequestWebException.java
| | | DataAccessException.java
| | |
| | \\---resources
| | application.properties
| |
| \\---test
| \\---java
| \\---org
| \\---ingsw21
| \\---backend
| \\---BackEnd
| BackEndApplicationTests.java
|
\\---target
+---classes
| | application.properties
| |
| \\---org
| \\---ingsw21
| \\---backend
| +---connection
| | DBConnection$ConnectionConfig.class
| | DBConnection.class
| |
| +---controllers
| | UserController.class
| |
| +---DAOs
| | DAOUtente.class
| |
| +---DAOSQL
| | DAOSQLUtente.class
| |
| +---entities
| | Utente.class
| |
| +---enums
| | DataSource.class
| |
| \\---exceptions
| BadRequestWebException.class
| DataAccessException.class
|
\\---test-classes
\\---org
-
看来“最终”正在引起问题。您可以删除“final”,或使用构造函数注入:stackoverflow.com/questions/58623900/…。
-
是的,就是这样。谢谢你。
标签: spring eclipse annotations application.properties