我使用JSF和Spring安全性。我实施它。
我的代码:
@Named("userDetailsManagerImpl")
@Scope("application")
public class UserDetailBusinessImpl implements UserDetailsService {
@Inject
private MenuBackingBean menu;
}
一切似乎都很好。但是我必须定义MenuBackingBean是应用程序范围。我只想要它的会话范围。所以我将范围更改为会话,但我在下面收到错误:
引起:org.springframework.beans.factory.BeanCreationException:创建名为'userDetailsManagerImpl'的bean时出错:当前线程的作用域'session'无效;考虑为这个bean定义一个范围代理,如果你打算从一个单独的引用它
我认为这个错误是由弹簧安全设置应用程序的默认范围造成的
我在谷歌搜索但没有回答这个问题(也许我没有正确的关键字搜索)。请帮我解决,谢谢你
更多信息我使用:
答案 0 :(得分:0)
我想你在某个地方有这个代码:
@Inject
private YourSessionBean yourSessionBean;
// later in some method
this.yourSessionBean.doSomething();
尝试在所有这些情况下使用javax.inject.Provider:
@Inject
private Provider<YourSessionBean> yourSessionBeanProvider;
// later in some method
this.yourSessionBeanProvider.get().doSomething();