gpt4 book ai didi

java - @Inject 和 java.security.Provider 组合是否给出了实例的范围配置?

转载 作者:行者123 更新时间:2023-12-02 09:14:53 28 4
gpt4 key购买 nike

在我的 Spring MVC 应用程序中,我有一个具有 @Autowired Service 类的 Controller (单例)。现在我需要更改 Service 类的范围,因为我在 bean 配置中将其更改为,

<bean id="managerService" class="com.company.xyz" scope="session" />

由于它是在单例类中自动连接的,因此返回的服务类实例始终相同。我真正需要的是一个 session 范围实例。为了解决这个问题,我实现了 @Inject (这可能类似于 Spring 的 @Autowired)和 Provider。

旧:

@RequestMapping("/home")
public class MyController {

@Autowired
ManagerService managerService;

新:

@RequestMapping("/home")
public class MyController {

@Inject
Provider<ManagerService> managerServiceProvider;

ManagerService managerService = managerServiceProvider.get();

这里,我需要知道,Provider.get()是否根据bean范围配置返回实例?

提前致谢

最佳答案

除了配置之外,您无需更改任何内容。因此,您只需更改 XML 即可。

<bean id="managerService" class="com.company.xyz" scope="session" />

现在发生的情况是,Spring 将使用一些 AOP/代理魔法并为您提供 ManagerService 的代理,而不是 ManagerService 的实际实例。对于代理上调用的每个方法,它将在所需的范围内查找 ManagerService 实例。它将创建一个新实例或检索它,并调用该实例的实际方法。

关于java - @Inject 和 java.security.Provider 组合是否给出了实例的范围配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59085291/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com