gpt4 book ai didi

java - 为什么 @Autowired 不能解决 Controller 类 spring mvc 的问题?

转载 作者:行者123 更新时间:2023-11-30 06:16:16 26 4
gpt4 key购买 nike

我有一个 Spring MVC 项目。我有一个类 Controller 、服务和 Dao 层。

@Controller
public class HomeController {

@Autowired
private PersonFacade personFacade;
....
}

我有我的服务等级

@Service
@Transactional
public class PersonFacadeImpl implements PersonFacade{

@Autowired
private PersonDAO personDAOdef;

//code ....
}

最后是我的 DAO 类

@Repository
public class PersonDAOImpl implements PersonDAO{
@Autowired
private SessionFactory sessionFactory;
//code
}

这很好用,我的问题在这里:

我做了一个类监听器,我想将 PersonFacade 与@Autowired 一起使用

public class PersonListener extends AbstractRepositoryEventListener<Person> {

@Autowired
private PersonFacade personFacade;
.... //code
}

我有这个异常(exception):

org.springframework.beans.factory.BeanCreationException: Error creating bean with name      
'personListener': Injection of autowired dependencies failed; nested exception is
org.springframework.beans.factory.BeanCreationException: Could not autowire field:
private com.gabrielglez.main.Facade.PersonFacade
com.gabrielglez.main.evenlistener.PersonListener.personFacade; nested exception is
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of
type [com.gabrielglez.main.Facade.PersonFacade] found for dependency: expected at least 1
bean which qualifies as autowire candidate for this dependency. Dependency annotations:
{@org.springframework.beans.factory.annotation.Autowired(required=true)}

我在其他包中有这个类,我不知道为什么在这个类中 Spring 无法创建对象,而在 Controller 内部工作得很好。

我不知道发生了什么。

这是我的 servlet 上下文:https://github.com/tsw1985/HelloHibernate/blob/master/src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml

简而言之,如果我想在 Controller 类之外注入(inject)一个带有@Autowired 的依赖项,我将遇到同样的问题。感谢大家。

如果你能帮助我,你将挽救我的生命,因为我有一个星期的时间来解决这个问题。

感谢大家!!

最佳答案

@Autowired 仅适用于由 Spring 管理的对象。因此,例如使用 @Component 注释您的类 PersonListener,并且不要将实例创建为 new Object()。例如使用@Autowired 来获取实例。

关于java - 为什么 @Autowired 不能解决 Controller 类 spring mvc 的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27584274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com