1

Javaコードでhttpリクエストオブジェクトを自動配線する方法を知っています:

@Resource
private HttpServletRequest request;

xml confで同様のことをしたいと思います。インスタンス化しようとしている Bean は、http セッション オブジェクトをコンストラクター引数として受け取ります。

    <bean class="..." scope="request">
        <constructor-arg>
             ???
        </constructor-arg>
    </bean>
4

1 に答える 1

1

このメソッドを使用するファクトリ クラスを作成できます。

http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/context/request/RequestContextHolder.html#currentRequestAttributes%28%29

例えば:

<bean id="httpSessionFactory" class="HttpSessionFactory">
    <constructor-arg>true</constructor-arg>
</bean>

<bean class="..." scope="request">
    <constructor-arg>
        <bean factory-bean="httpSessionFactory"
              factory-method="getSession"/>
    </constructor-arg>
</bean>

そしてJava:

public class HttpSessionFactory {
    private boolean create;

    public HttpSessionFactory(boolean create) {
        this.create = create;
    }

    public static HttpSession getSession() {
        ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
        return attr.getRequest().getSession(create);
    }
}
于 2012-11-20T23:02:05.590 に答える