我在这上面花了好几个小时。我无法使用属性文件正确地对变量进行插值。我有一个属性文件,无法获得正确插值的值。我已经尝试使用外部配置和jar内部的配置显式指定该文件,但都无济于事。

用法
@Component
public class TeradataConnector {
@Value("${jdbcurl}")
private String teradataConnection;
@Value("${jdbctable}")
private String teradataTable;错误
Jan 05, 2021 6:10:15 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-nio-8080"]
Jan 05, 2021 6:10:15 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service [Tomcat]
Jan 05, 2021 6:10:15 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet engine: [Apache Tomcat/9.0.34]
Jan 05, 2021 6:10:15 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring embedded WebApplicationContext
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'teradataConnector': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'jdbcurl' in value "${jdbcurl}"
Jan 05, 2021 6:10:16 PM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service [Tomcat]
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'teradataConnector': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'jdbcurl' in value "${jdbcurl}"
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:405) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1422) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:895) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at com.company.nap.cyclic.App.main(App.java:11) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'jdbcurl' in value "${jdbcurl}"
at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:178) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:124) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:236) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:210) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.context.support.PropertySourcesPlaceholderConfigurer.lambda$processProperties$0(PropertySourcesPlaceholderConfigurer.java:175) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveEmbeddedValue(AbstractBeanFactory.java:912) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1247) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1226) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:130) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) ~[cyclic-feature-cyclic_migration-494a9e9-dirty.jar:?]
... 17 moreapplication.properties
#### Personalized Batch Configuration
batch.max_records=1
batch.max_wait_seconds=15
jdbcurl=wefwef
jdbcuser=wefwef
jdbcpass=fweijfwef
teradata.table=tester发布于 2021-01-06 10:41:54
@SpringBootApplication公共类MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class,args);}
TeradataConnector类驻留在步骤1中找到的Spring Application类所在位置下的包中。那么您的TeradataConnector类必须是:com.companyxyz.invoice.someotherpackage
注意到:它可以进一步下跌。换句话说,它不一定要直接在下面,就在某个地方下面。
Spring Reason:默认情况下,Spring Boot应用程序在启动时只扫描和自动连接主应用程序包下的包中的组件。注意:您还可以添加一个@ComponentScan注释,并告诉Spring在哪里可以找到这些组件,如果它们不在您的目录下。但是,我建议只将它们移到下面,除非有令人信服的理由。
发布于 2021-01-06 12:58:40
确保您导入的类为import org.springframework.beans.factory.annotation.Value的@Value注解
application.properties文件应该在 src\main\resources文件夹中。
您必须在缺少的application.properties文件中为jdbctable添加键和值。
https://stackoverflow.com/questions/65588856
复制相似问题