我有课
@Service("registrationService")
@Transactional
public class RegistrationService {
@Resource(name="registrationDAO")
public RegistrationDAO registrationDAO;
在 Controller 中我可以毫无问题地访问registrationService和registrationDAO。
我还有一个类
@Service("securityService")
public class SecurityService implements UserDetailsService {
protected static Logger logger = Logger.getLogger("service");
@Resource(name="registrationDAO")
public RegistrationDAO registrationDAO;
public String test(){
logger.debug(registrationDAO.findUserByID(1) );
return "Testing";
}
现在,如果我在 Controller 中调用测试函数,那么它会在注册DAO 上给出空指针异常
最佳答案
你所有的@Service
, @Repository
, @Controller
, @Component
(等)带注释的类必须由 spring 管理才能 Autowiring 工作。确保它们被 spring 类路径扫描找到:
<context:component-scan base-package="com.company" />
在某些情况下@Autowire
,它按类型进行 Autowiring ,有助于避免 name
您提供的参数 @Resource
。
关于java - Spring注入(inject)不适用于不同的服务类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5437331/