java - AOP session 范围代理获取单例范围

标签 java spring spring-mvc spring-aop

我试图将 session 范围的 inputForm bean 注入(inject)到 Singleton 范围的 Controller 中,但 InputForm bean 却获得了 singleton 范围。任何帮助是极大的赞赏。

@Controller
@RequestMapping("/app")
public class MyAppController {

// AOP session scoped proxy type CGLIB
@Autowired  private InputForm inputForm;

@RequestMapping(value = "/home", method = RequestMethod.GET)
public ModelAndView returnHome() {
    Map<String, Object> modelMap = new HashMap<String, Object>();
    modelMap.put("inputForm", inputForm);
    return new ModelAndView("homePage", modelMap); 
}

@RequestMapping(value = "/process", method = RequestMethod.POST)
public ModelAndView processData(@ModelAttribute("inputFormAttr")                                                    
     InputForm inputFormBinding) {
// inputFormBinding is the data bound from inputs in jsp page.
this.inputForm = inputFormBinding;
}


<bean id="inputForm" class="<package>.InputForm" 
                    scope="session" init-method="init">
    <property name="id" value="${property_id}"/>
    <property name="name" value="${property_name}"/>
    <property name="phoneNo" value="${property_phone}"/>
    <aop:scoped-proxy proxy-target-class="true"/>
</bean>

最佳答案

你正在做的事情很好。 Spring将代理注入(inject)到注入(inject)目标

@Autowired  private InputForm inputForm;

但是当您调用此对象上的方法时,代理将委托(delegate)给将存储在 HttpSession 中的对象。

请注意,每个目标 bean 将具有通过属性占位符设置的相同属性

<property name="id" value="${property_id}"/>

这些可能会在调试时误导您,但 bean 确实具有 session 范围。

关于java - AOP session 范围代理获取单例范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24515760/

相关文章:

java - 当我在java中运行sshpass命令时找不到它

JavaFX:GridPane 中的 ComboBox 导致不必要的大小调整

java - struts-config 文件的 action 标签中的 scope 属性是什么意思?

angular - 使用 Spring Boot 从服务器端重定向到 Angular 路由

java - Thymeleaf 在对象列表上进行多重选择

java - 通过 Spring XmlWebApplicationContext 指定相对资源路径

java - 为什么我的比较方法违反了它的一般契约?

eclipse - 寻找 Spring Bean 引用资料?

java - 基本身份验证后 Spring Security 抛出 403

java - Spring:为@ModelAttribute创建元注释