UserDetailsS​​ervice自己实现的Spring安全空依赖bean

时间:2011-02-15 20:32:48

标签: spring spring-security

我开发了应用Spring,Wicket,Hibernate和Spring Security的应用程序。一切正常,但现在我添加了自己的UserDetailsS​​ervice实现来从数据库中获取用户。我在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) 
    }

1 个答案:

答案 0 :(得分:2)

嗯,启蒙总是来得太晚了。简单,@ SpringBean注释是特定于wicket的。因此,在SpringSecurity中不依赖于wicket,所以只需用@Autowired替换它就可以了。