会话范围的bean表现为请求范围bean

时间:2014-12-04 20:10:46

标签: java spring session-scope

我有会话范围bean,其行为为请求范围bean。

我在Singleton bean中使用它,也许这就是为什么第二个请求有空值? 我用来设置bean的代码: 在单身人士中:

@Autowired
private MyBean myBean;

MyBean类:

@Component
@Scope(value = "session", proxyMode = ScopedProxyMode.INTERFACES)
public class MyBeanImpl implements MyBean, Serializable {

配置:

@Configuration
@ComponentScan(scopedProxy = ScopedProxyMode.INTERFACES, value = {  "my.package.with.bean" })
public class ComponentsConfig {
}

MyBean很简单。与吸气剂和二传手。 在第一个请求中,我在该bean上设置了值,第二个请求在同一个类(singleton)中,我想读取这些值,但所有值都为null。没有办法让某些东西超过这些价值。

修改 我如何提出请求 - 它只是简单的浏览器请求,读取/写入会话bean的代码位于过滤器中。

这是单身人士:

@Service
public class SingletonBean {

    @Autowired
    private MyBean myBean;
// here I save the data to session scoped bean
    private void saveUser(LdapContext ctx, String principal) throws NamingException {
        Attributes attributes = getAttributes();
        myBean.setId("id");
        myBean.setName("name");
        myBean.setEmail("email");
        myBean.setTelNum("123");
        myBean.setGroups(Lists.newArrayList("one", "two"));
        myBean.setAddress("address");
    }
// here I try to read data from session scoped bean:
    @Override
    protected AuthorizationInfo queryForAuthorizationInfo(PrincipalCollection principals,
            LdapContextFactory ldapContextFactory) throws NamingException {
       // here userInfo will be null
        List<String> userInfo =  myBean.getGroups();
        SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
        for (String role : userInfo ) {
            authorizationInfo.addRole(role);
        }
        return authorizationInfo;
}

}

当用户登录并进行身份验证时,我将其详细信息保存在会话bean中。当他尝试打开任何页面方法时,执行queryForAuthorizationInfo(在过滤器链之后)并且该对象中的值为null。

0 个答案:

没有答案