java - @Inject 和 java.security.Provider 组合是否提供了关于其范围配置的实例?
问题描述
在我的 Spring MVC 应用程序中,我有一个具有@Autowired
Service 类的控制器(单例)。现在我需要更改 Service 类的范围,因为我在 bean 配置中将其更改为,
<bean id="managerService" class="com.company.xyz" scope="session" />
由于它是在单例类中自动连接的,因此服务类实例总是返回相同的。我真正需要的是一个会话范围实例。为了解决这个问题,我实现@Inject
了(可能类似于@Autowired
Spring)和 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" />
现在发生的情况是ManagerService
,Spring 将使用一些 AOP/proxy 魔法而不是ManagerService
. 对于代理上调用的每个方法,它将在它需要的范围内查找ManagerService
. 它将创建一个新实例或检索它,并在该实例上调用实际方法。
推荐阅读
- flutter - CachedNetworkImage 的颤振占位符
- python - 对于新创建的文件,write() 和 append() 方法有什么区别吗?
- python - 无法使用 Python Selenium 选择项目我做错了什么?
- python - 将“美化”JSON读回python
- javascript - 反应菜单组件
- python - 值更改后Tensorflow找不到变量?
- apache - 从 http 重定向到 https 时,从 url 中删除斜线
- python - 从忽略 NaT 的 pandas 数据框中获取 datetime.date 的最小值/最大值
- python - 使用标志提取文本以使用 PyMUPDF 专注于粗体/斜体字体
- eclipse - Mac系统tomcat服务器如何设置log4j日志文件