当前位置: 首页 > 知识库问答 >
问题:

在应用程序上下文文件中定义的bean不工作

吴举
2023-03-14

我定义了一个bean在Spring上下文文件'Application ationContext.xml'如下所示:

<bean id="daoBean" class="org.mockito.Mockito" factory-method="mock">
        <constructor-arg value="com.xxx.DAOImpl" />
</bean> 

在我的服务类(ServiceImpl)中,我使用如下bean:

 @Component("serviceImpl")
 public class ServiceImpl{
        // other code here

        @Autowired
        private transient DAOImpl daoBean;

        // other code here
    }

正在从JUnit测试类访问我的服务类。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/applicationContext.xml" }) 
public class JUnitTest{
    // other code here

    @Autowired
    private transient ServiceImpl serviceImpl;

    // test cases are here
}

当我执行测试用例时,它会给出错误提示:

创建名为“ServiceImpl”的bean时出错:自动连线依赖项的注入失败;嵌套的异常是org。springframework。豆。工厂BeanCreationException:无法自动连接字段:private transient com。xxx。DAOImpl

当我从服务类中删除@Autow0009并使用@Resources(name="daoBean")时,测试用例工作正常。

public class ServiceImpl{
            // other code here

            @Resource(name = "daoBean")
            private transient DAOImpl daoBean;

            // other code here
        }

我的问题是为什么在这种情况下@Autowung不起作用?我需要用@Autowoe配置其他任何东西吗,这样它才能正常工作。我不想改变我的服务层类来将@Autowoe替换为@Resources。

共有1个答案

燕经国
2023-03-14

Mockito。mock()有一个通用的返回类型T,它在运行时被删除,因此Spring无法推断创建的mock的类型,它将在Spring上下文中简单地注册为对象。这就是为什么@Autowired不起作用(因为它试图按依赖项的类型查找依赖项)。

看看这个问题的答案。

 类似资料:
  • 问题内容: 您可以在不使用元素的情况下在Spring application-context.xml文件中创建列表吗? 我有一个其构造函数带有对象的bean,并且我想通过“ value”属性传递整个列表。原因是此值来自.properties文件,您无法在.properties文件中定义列表。 我想做这样的事情…可能吗? MyClass.java: application-context.xml:

  • 我们如何使用Spring Boot在Web应用程序构建的Web应用程序上下文中找到所有bean。我看到了许多从应用程序上下文中获取bean但不从Web应用程序上下文中获取bean的示例。

  • 问题内容: app.py test.py 我正在将 应用程序 导入到 test.py中 以进行单元测试。在将’ before_request ‘函数调用到test.py中时,它会抛出RuntimeError:在应用程序上下文之外工作同样会在调用’ input_info() ‘时发生 问题答案: Flask有一个Application Context ,似乎您需要执行以下操作: 您可能还可以将调用推

  • 但是,我有一个组件,它注入了EurekaClient来从中获取服务实例 因此,从这个服务开始,我的应用程序无法加载ApplicationContext。 到目前为止我所尝试的 解决这个问题的恰当方法是什么?

  • 问题内容: Spring框架中Application context和bean factory的简单词义。 问题答案: BeanFactory厂 该是初始化,配置实际的容器,并管理多个bean。这些bean通常彼此协作,因此彼此之间具有依赖性。这些依赖关系反映在所使用的配置数据中(尽管某些依赖关系可能不会作为配置数据可见,而是在运行时Bean之间的编程交互作用的函数)。 ApplicationCo

  • 我有一个spring boot应用程序abc.myapp.war,它部署在外部tomcat服务器上。默认情况下,tomcat使用war文件名作为部署的应用程序的上下文路径,因此它变成http://localhost:8080/abc.myapp,但我希望有一个自定义的上下文路径,如http://localhost:8080/abc/myapp。我阅读了其他帖子,他们建议在tomcat的server