java - 刷新/替换 ApplicationContext 中的 bean。有可能还是我错过了重点?

标签 java spring web-applications

首先,我认为我正在尝试错误地使用 Spring,但我们将不胜感激。

我正在尝试在应用程序中间重置单个 bean。我的初始配置运行得很好。

我的场景

  • 1 个保险 claim bean( session 范围)
  • 1 声明详细信息 bean,它是 多 Action Controller (启用 getClaim&setClaim,原型(prototype) 范围)
  • 1 claim 人详细信息 bean,它是 多 Action Controller (启用 getClaim&setClaim,原型(prototype) 范围)
  • 1 提交声明 bean,它是
    多 Action Controller
    (启用 getClaim&setClaim,原型(prototype) 范围)。

我的应用程序比这更复杂,但为了提供一个清晰的示例,我不会描述整个事情。

前两个 Controller 用于设置声明的各种属性、验证等。
第三个将声明写入数据库。然后我希望它重置 bean。但是,我不能只在 SubmitClaimController.OnSubmit() 中说 Claim=new Claim() ,因为 ApplicationContext 保留对旧声明的引用。

我可以创建一个方法 Claim.clear(),但这感觉像是错误的方法。但是,我看不到类似 ApplicationContext.destroyBean(beanname) 或 ApplicationContext.createBean() 的内容。

我不想刷新整个 ApplicationContext,因为我想在整个 session 期间保持其他 Bean 的 Activity 状态。

提前致谢。

最佳答案

我认为 Claim 对象不应该由 Spring 管理。它确实没有被注入(inject);听起来它应该与发送到 Controller 的请求绑定(bind)并传递给服务进行处理。如果您将声明放入 session 范围内,则需要在事务完成或 session 超时时使 session 失效。

顺便说一下,我看到你提到了三个 Controller ,但没有服务。您应该有一个服务层,并且 Controller 不应该处理 DAO 或持久性。

关于java - 刷新/替换 ApplicationContext 中的 bean。有可能还是我错过了重点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1263416/

相关文章:

java - 需要测试静态Utils类

java - Spring 命名参数异常

windows - 远程服务器 : LogonUser or LsaLogonUser? 的 Web 应用模拟

java - 如何保持登录状态

java - Spring 无法 Autowiring Map bean

optimization - 脚本/样式表 : Consolidate locally or use CDN?

Java,当在 ObjectOutputStream 上调用 readObject() 时,它仅返回一个值

java - 如何复制 .xlsx 完整工作簿

java - jsr286 portlet 中的异常处理

java - 如何在 Angular 6 中使用 Spring MVC 的 ModelAndView 响应?