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

标签 java spring spring-mvc autowired inject

在我的 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/

相关文章:

java - 使用带有 Java API 的服务帐户对 Google API 进行身份验证

java - 如何切换 ArrayList 中的元素

java - 什么是可以在我的Web应用程序出现故障时通知我的工具或Tomcat配置?

Spring security with @RestController - JSONish CustomAuthenticationProvider 响应

java - Spring AOP 切入点未触发

jquery - Ajax Jquery 调用重定向

java - Android - 在 ImageView 中显示图像 10 毫秒

来自 XML 代码的 Java GetAttribute

java - 使用 Maven 构建 .war 文件。缺少文件和目录

java - Spring未在数据库中保存多对多映射