问题标签 [spring-context]
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-boot - 即使在使用 DelegatingSecurityContextAsyncTaskExecutor 之后,Spring 上下文也没有得到更新
我在 spring 上下文中遇到了一些问题,在阅读了所有文章之后,它确实变得更加混乱。所以,这是我的用例:
我有一个正在运行的应用程序,它需要在请求中传递用户的身份验证令牌才能在我将在后台运行的进程中使用它。此令牌用于进行 rest api 调用。起初,我们手动创建新线程并传递上下文,我对 spring 上下文使用 MODE_INHERITABLETHREADLOCAL 策略。但在最新版本中,我们开始使用线程池。它在部署后工作,但令牌在某个点之后变得无效,因为线程没有获得最新的上下文。我阅读了文章并开始使用 DelegatingSecurityContextAsyncTaskExecutor,如下所示:
@Bean public DelegatingSecurityContextAsyncTaskExecutor taskExecutor(ThreadPoolTaskExecutor delegate) { return new DelegatingSecurityContextAsyncTaskExecutor(delegate); }
但是我今天检查时仍然遇到同样的问题。现在明天我可能会收到来自测试员的邮件,其中包含失败的测试用例。我想补充一点,我仍然使用 MODE_INHERITABLETHREADLOCAL 作为策略以及 DelegatingSecurityContextAsyncTaskExecutor。请帮帮我。
java - 什么是 XML 配置继承到基于 Java 的配置的等价物?
我了解 Spring 具有基于配置的继承,这意味着我可以创建将另一个 bean 引用为父级的 bean,并且 Spring 会将定义的属性复制给子级。我正在研究如何对基于 Java 的 Spring 配置做同样的事情。我将通过以下示例进行说明:
在 Spring 配置中,我可以定义以下Properties
类来保存值:
稍后在 Spring XML 配置中,我可以使用配置继承定义以下 3 个 bean:
这导致propertiesBase
with someValueForA
, propertiesChild 拥有someValueForA
和someValueForB
, 最后 propertiesGrandChild 拥有someValueForA
,someValueForB
和someValueForC
我想在基于 Spring Java 的配置中,我可以定义类似的东西
但是这种方法的问题是,如果类Properties
发生变化,那么所有Bean
定义都需要相应地变化以保持值的传播。这个问题是否有另一种方法,不会受到后一个问题的影响?
spring-boot - PropertyOverrideConfigurer 在 Spring Boot 2.4.4 中不起作用,但在 1.5.3 中起作用
以下代码适用于 Spring boot 1.5.3,但在 2.4.4 中失败
它失败并出现以下错误
java - 有没有一种可靠的方法可以通过名称来确定非单例 bean 的类型?
我有一个未知范围的 bean 的名称。我试图以可靠的方式(处理代理等)确定它的静态类型(用 注释的类@Component
,或工厂方法的返回类型)。@Bean
BeanFactory.getType(beanName)
给我一个代理类。BeanFactory.getBeanDefinition(beanName).getResolvableType()
在很多情况下给了我一个EmptyType
.
用于确定 bean 类型的所有实用程序方法AopUtils.getTargetClass()
都AopProxyUtils.ultimateTargetClass()
需要一个实际实例,对于非单例,我无法安全地获得它。
如果 bean 是由工厂方法创建的,我可以通过找到该方法beanDefinition.getSource()
并从那里获取其返回类型。@Component
但是对于带注释的类来说似乎没有任何可能。我可以获得类名,但不能获得类本身(并且按名称加载它是我宁愿避免的一罐蠕虫)。
有什么我可以在这里做的吗?
spring-boot - War 文件部署中带有子上下文的 Spring Boot 配置
我们有一个 Spring Boot 应用程序,我们将其部署为一个 war 文件。当我们更新到 Spring Boot 2.4.3 时,我们开始在内容协商管理器区域看到一个问题。该应用程序有一个 REST url (/xxx) 和一个运行 UI 应用程序的 webapp url (/xxx/yyy)。由于 Spring Boot 更改,webapp url 存在内容协商问题。如果我进行更改以支持 webapp,则 REST webapp 会出现问题。我正在考虑将 webapp 更改为子应用程序上下文并覆盖那里的内容协商管理器。
我看到很多子上下文的例子,但没有一个有战争部署。例如,我们不能为子上下文设置不同的端口。我尝试了几种使用 SpringApplicationBuilder 和 child() 方法的方法,但我从未看到实例化子上下文的配置。
这种方法有问题还是其他人可以提出前进的道路?
java - Spring Boot 应用程序上下文干扰了单独的 ClassPathXmlApplicationContext
因为我必须使用遗留应用程序,所以我想使用来自单独 Spring 上下文的 bean。
我使用这样的 XML bean 定义创建了这个单独的 Spring 上下文:
在我自己的“外部”Spring Boot 应用程序中,我有这样的上下文@Configuration
:
但是,当我运行应用程序时,我收到此错误:
当我sybaseDataSource
从我@Configuration
的 中删除时,错误消失了(我的应用程序由于丢失而无法启动sybaseDataSource
)。
似乎遗产ClassPathXmlApplicationContext
确实知道我的“外部” Spring Boot 上下文。怎么会这样?
java - 启动时 EnvironmentPostProcessor 实现类中的 Autowired 属性为空
在我的 SpringBoot 应用程序中,我configObject
在实现EnvironmentPostProcessor
.
注入的类在启动时从不同的源读取数据,因为这是应用程序工作所必需的。
但是在启动应用程序时,configObject
它会显示为 Null。
以及调用 Autowired 对象的 AppEnvironmentPostProcessor 类。此类org.springframework.boot.env.EnvironmentPostProcessor
在 spring.factories 中配置。该类在启动时被调用。
在 KeysConfig 类中
我正在使用 Intellij Ultimate。我该如何调试和解决这个问题?
java - 在非请求范围进程中访问请求范围的 bean
我有请求范围的 bean,它通过拦截器填充,并且在进行 api 调用时在上下文中可用。
我的应用程序也有 kafka 消费者,我必须在消费者流中访问这个用户 bean,但我收到错误,即在非请求范围内访问请求范围的 bean。我想在消费者流程中创建这个 bean,因为它不可用并稍后在流程中使用它。
java - 如何找出上下文春天升起的时间?爪哇
我想记录从引发 spring 上下文开始到其完整工作开始之间的时间。我想为此使用一个事件侦听器,实际上我可以在上下文完全引发并准备就绪时拦截 ContextRefreshedEvent。
但我不明白我怎么能截取上下文刚刚开始上升的那一刻。请告诉我有哪些选择。
java - 如何配置 DataBinder 以使用特定的语言环境来匹配逗号作为小数分隔符?
我使用 DataBinder 将值映射到这样的对象:
现在我有一些以逗号作为小数分隔符的字符串,需要转换为双精度。
这给了我以下错误,因为“0,00” 无法转换为双精度:
我不知道如何使 DataBinder 接受逗号作为小数分隔符或使用语言环境Locale.FR
(这是数据源语言环境)。
这没有帮助:
有人可以告诉我如何处理小数点逗号吗?
这是我的测试用例: