我开发了应用Spring,Wicket,Hibernate和Spring Security的应用程序。一切正常,但现在我添加了自己的UserDetailsService实现来从数据库中获取用户。我在applicationContext-security.xml文件中配置它,并使用Spring将依赖项添加到我的UserDAO。但是,由于我的userDAO为null,我得到了空指针异常。为什么这种依赖不起作用?我以同样的方式执行此操作,例如,WebPages子类,一切运行良好。
@Service
public class ComicsUserDetailsService implements
org.springframework.security.core.userdetails.UserDetailsService {
@SpringBean
private UserDAO userDAO;
public ComicsUserDetailsService() {
System.out.println("$$$ UserDetailsService created");
}
@Override
public UserDetails loadUserByUsername(String username)
throws UsernameNotFoundException, DataAccessException {
(bla bla)
}
}
UserDAO是非常简单的类
@Service
public class UserDAO {
public UserDAO() {
System.out.println("$$$ UserDAO created");
}
@PersistenceContext
private EntityManager em;
(fetch and other bla bla methods)
}
答案 0 :(得分:2)
嗯,启蒙总是来得太晚了。简单,@ SpringBean注释是特定于wicket的。因此,在SpringSecurity中不依赖于wicket,所以只需用@Autowired替换它就可以了。