问题标签 [spring-config]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - 自动装配不适用于 Spring 中的 ConfigurationProperties bean
我有一个 application.yml 文件,其中包含如下对象列表:
我创建了一个名为MailBoxProperties的 spring 配置类,以便在 bean 中具有这些属性,如下所示:
邮箱属性.java
我想将上面的配置 bean 注入到另一个配置类中,如下所示:
OutlookConnectionManager.java
但是,MailBoxProperties 始终为空,并在从 getMailBoxProperties 调用 mailBoxProperties.getMailBoxes() 时引发空指针异常。
(我试过给@Configuration @EnableConfigurationProperties(MailBoxProperties.class)。它抛出一个异常,说明创建了2个bean。一个带有实际路径,另一个带有null)。我试过@Import(){MailBoxProperties.class}。
但是,注入在我的主应用程序类中完美运行,如下所示:它获取 bean 并正确打印邮箱名称。
邮件应用程序.java
我是否缺少 OutlookConnectionManager.java 中的任何配置?请帮忙。
注意: 我使用的是 Spring boot 1.5.7.RELEASE
谢谢你。
spring - web.xml 中 contextConfigLocation(s) 之间的关系
我在 web.xml 中定义了contextConfigLocation (s),如下所示:
在 root-context.xml 中,我有
现在,我观察到在servlet-context.xml或其子上下文 xml ( beans:import ) 中配置的 Spring bean 中不需要的任何属性都可以解析,尽管它们在propFile中明确定义并且可以从根上下文解析.xml或其子上下文 xml。
还有,更痛苦的是
如果我在 root-context.xml 中使用mvc:mapping path="/ "** 定义mvc:interceptor ,则不会为请求模式="/rest/*" 调用拦截器。但是,如果在 servlet-context.xml 或其子 xml 中配置,则成功调用相同的拦截器。
如果我遗漏了什么或者这是预期的行为,请告诉我?
环境:
Java 版本:1.8.0_60,供应商:甲骨文公司
操作系统名称:“windows 7”,版本:“6.1”,arch:“amd64”,家族:“dos”
io.spring.platform:platform-bom:Brussels-SR3 将我的大多数 Spring 依赖项(例如 spring-context、spring-beans 等)的版本解析为4.3.9.RELEASE
java - 在 Spring 启动时执行方法
我想在应用程序启动期间(或更确切地说是在结束时)执行一些代码。我发现有几个资源使用@PostConstruct 注释、@EventListener(ContextRefreshedEvent.class)、实现 InitializingBean、实现 ApplicationListener...它们都在启动时执行我的代码,但应用程序属性的占位符并没有被替换片刻。因此,如果我的类有一个带有 @Value("${my.property}") 注释的成员,它会返回 "${my.property}" 而不是 yaml(或任何地方)中定义的实际值。替换发生后我如何完成执行我的代码?
spring-cloud - Spring Cloud Config 不断检查 master 分支
我遇到了 Spring Cloud Config 的问题。我有一个带有我的配置文件的远程 git repo,它被克隆到本地以进行本地测试。
我的项目有 4 个 bootstrap.yml 文件,如下所示
引导程序.yml
引导-dev.yml
引导本地.yml
引导远程.yml
远程仓库有一个主分支和一个开发分支。当我在本地结帐开发并启动我的配置服务时,它会签出主分支。
为什么会发生这种情况,我该如何阻止它?我正在开发配置文件和本地配置文件中启动配置服务,该配置文件使用 bootstrap-dev.yml 中看到的“开发”标签。
spring-boot - 使用 @Async 方法创建 bean 时出现代理错误
我已经编辑了这个,因为我意识到我误诊了错误的原因。该错误是因为我在由 bean 实例化的抽象类中有一个异步方法。我已将此方法添加到下面的抽象类中。如果我注释掉 @Async 注释,代码将构建并“运行”。这给了我现在可以查看的地方,但我会留下这个问题,以防有人可以帮助并让我更快地启动和运行!
我正在尝试重构使用 xml 配置以使用 SpringBoot 和代码配置的 java/spring 应用程序。对我来说,这是一条非常古老的学习曲线。
我遇到了一个错误,我认为该错误记录得很好,但我无法理解文档。本质上,一个 bean 被创建,然后在另一个 bean 的构造函数中使用。将其移至代码配置时出现的错误是...
从一些谷歌搜索来看,我认为这与将一个 bean 传递到另一个 bean 的机制有关,因此这个 bean 成为代理 bean。
所以xml配置是这样的......
这很好用(Spring 4 MVC java 8(从 7 升级,代码转换最少)。
到目前为止的代码配置看起来像这样
AsyncAccountReader 没有引起任何问题当我包含基于抽象类的类的编写器时出现错误(上图),因此沿着这些线
界面
抽象类
具体类
因此,如果我包含太多或削减太多以试图指出相关内容,请道歉。
关键是我认为如果我删除 @Async 注释,代码会构建并运行,否则我会收到上面的错误。谁能告诉我为什么这是一个问题,并指出我实施解决方案的写作方向?
java - 有什么方法可以将注释的值传递给我在 Spring Boot 中的配置?
我有一个配置,它是@Import
由注释编辑的。我希望配置可以访问注释上的值。这可能吗?
配置:
注释
如何在我的配置中获得下面传递的值?
java - 停止 spring boot 应用程序启动,直到 spring cloud config server 启动
我正在尝试使用以下属性集运行我的 Spring Boot 应用程序,并且我希望它继续重试从配置服务器加载属性 50 次,在任何两次尝试之间等待 6 秒,即使之后它也无法连接到配置服务器,它应该恢复启动或退出(我对重试后弹簧引导能够做的任何事情都漠不关心)。但它的行为似乎不像预期的那样。
我的启动命令 -
但是我遇到了以下错误,因为它在一次尝试后恢复了启动。
说明:
无法确定数据库类型 NONE 的嵌入式数据库驱动程序类
行动:
如果您想要一个嵌入式数据库,请在类路径中放置一个受支持的数据库。如果您有要从特定配置文件加载的数据库设置,您可能需要激活它(当前没有配置文件处于活动状态)。
spring - 使用spring java config为不同包中的bean自动装配不起作用
我正在尝试实现一个简单的 Spring AOP 示例。
用例:
我有一个带有艺术家、标题等属性的光盘 (SgtPeppers) 类。它有一种播放特定曲目的方法。我创建了一个方面来计算播放曲目的次数。我有一个测试类来测试它。
问题:
光盘类与方面和测试类在不同的包中。使用 spring java config 方法配置 Bean。但是,自动装配似乎不适用于光盘类。它抛出 BeanCreationException。
请在下面找到代码: 光盘类(这里,它被配置为 SgtPeppers)
TrackCount 方面:
跟踪计数器配置:
TrackCounterTest:
在这里,SgtPeppers 类位于 com.springinaction.soundsystem.autoconfig 包中。TrackCounter 和 TrackCounterconfig 在 com.springinaction.aspects.concert.config 包中。我得到以下异常:
org.springframework.beans.factory.BeanCreationException:创建名为“com.springinaction.aspects.concert.trackCounter.TrackCounterTest”的bean时出错:注入自动装配的依赖项失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:无法自动装配字段:私有 com.springinaction.soundsystem.autoconfig.SgtPeppers com.springinaction.aspects.concert.trackCounter.TrackCounterTest.sgtPeppers;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有为依赖项找到 [com.springinaction.soundsystem.autoconfig.SgtPeppers] 类型的合格 bean:预计至少有 1 个 bean 有资格作为此依赖项的自动装配候选者。依赖注释: org.springframework.beans.factory 中的 {@org.springframework.beans.factory.annotation.Autowired(required=true)}。RemoteTestRunner.runTests(RemoteTestRunner.java:459) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run( RemoteTestRunner.java:382) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 原因:org.springframework.beans.factory.BeanCreationException:无法自动装配字段:私有 com。 springinaction.soundsystem.autoconfig.SgtPeppers com.springinaction.aspects.concert.trackCounter.TrackCounterTest.sgtPeppers;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有为依赖项找到 [com.springinaction.soundsystem.autoconfig.SgtPeppers] 类型的合格 bean:预计至少有 1 个 bean 有资格作为此依赖项的自动装配候选者。依赖注释: org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:509) 中的 {@org.springframework.beans.factory.annotation.Autowired(required=true)}。 beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:290) ... 26 更多原因:org.springframework.beans .factory.NoSuchBeanDefinitionException:没有为依赖找到类型 [com.springinaction.soundsystem.autoconfig.SgtPeppers] 的合格 bean:预计至少有 1 个 bean 有资格作为此依赖的自动装配候选者。依赖注解:{@org.springframework.
注意:我已经尝试使用 basePackages、basePackageClasses 进行 ComponentScan。但是,它没有用。我不使用 Spring Boot 配置,因为它是出于学习目的。
我在 com.springinaction.aspects.concert.config 包中创建了相同的 SgtPeppers bean。自动装配工作。为什么 bean 创建的 java config 方式不适用于不同包中定义的 bean?
任何建议都会有所帮助。
谢谢。
spring - Spring Framework 5.0.0.Final 父上下文未加载
我正在尝试使用最新的 spring 5.0.0.Final 和我的 EAR 项目,该项目在web.xml中使用context-param定义了一个父上下文 ,参数名称为 locatorFactorySelector和parentContextKey但 spring 无法加载父上下文。当我检查ContextLoaderListener源代码时,似乎没有应用逻辑来选择父上下文。这里我的问题是spring 5是否提供任何默认的ContextLoader实现来满足父上下文的加载或spring 5丢弃,如果不是支持这个的方法是什么,我是否必须实现我们自己的?
spring - 使用 Git 的 Spring 配置服务
我将为我们的微服务架构使用 Spring Config Service (SCS)。目前,我们的云堆栈位于 AWS 上。由于 SCS 将在 Docker 上运行,这要归功于 Pipeline + Cloud Formation,并且我们的配置存储库将位于具有加密值的私有 GitHub 存储库上:
- 是否有任何最佳实践来刷新将在 Docker 中“拉取”的存储库?
- 如何在任何实例上更新它?(因为我的服务将使用 HA 进行负载平衡)。