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

如何优先使用相同ID的spring bean?

勾岳
2023-03-14

在我们的项目中,我们将spring与Junit一起用于Junit测试。我们使用@contextconfiguration注释加载多个文件。我们有两个类AbstractContextJUnitTestContextJUnitTestContextJUnitTestextendsAbstractContextJUnitTest

在代码流过程中,我注意到在具有不同bean类型的多个文件中有相同的bean Id。当我测试这些JUnit并得到以下错误时。

错误:

beAnnotoFRequiredTypeException:名为“选民ID”的Bean应该是[com.spring.test2.student]类型,但实际上是[com.spring.test2.parent]类型

我的要求是学生bean应该加载VoterId而不是父bean。

<beans> 
    <context:annotation-config/>
    <bean id="voterId" class="com.spring.test2.Parent">
    <property name="Name" value="hai"/>
    </bean>
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" />
        <property name="username" value="system" />
        <property name="password" value="system" />
    </bean> 
    <bean id="transactionManager"

        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

        <property name="dataSource" ref="dataSource" />
    </bean> 
</beans>
<beans>

    <context:annotation-config/>
    <bean id="voterId" class="com.spring.test2.Student">
        <property name="name" value="hello"/>
        <property name="number" value="2080"/>
     </bean>
</beans>
@ContextConfiguration(locations="classpath:/com/spring/test2/test1.xml")
public class AbstractContextJUnitTest extends AbstractTransactionalJUnit4SpringContextTests{


}

contextJUnitTest.java

@ContextConfiguration(locations={"classpath:/com/spring/test2/test.xml"})
public class ContextJUnitTest extends AbstractContextJUnitTest{


    @Test
    public void testStudent(){
        Student stud=applicationContext.getBean("voterId",Student.class);
        assertEquals(stud.getNumber(), 2080);
    }
}

共有1个答案

施刚毅
2023-03-14

这可能是因为您已经按此顺序扩展了类。.而且您的test.xml没有任何带有of student的bean。所以它只是遵循继承并找到父级。下面几行让它首先在test.xml中查找bean voterid,并在那里找到了它。ContextConfiguration(locations={“classpath://com/spring/test2/test.xml”})公共类ContextJUnitTest

 类似资料:
  • 问题内容: 我有一个像这样的元素: 我想给它的CSS类更大的优先级,而不是它的CSS ID。可能吗? (换句话说,我想将-color 设置为其) 问题答案: 不要使用,因为这是最糟糕的解决方案,如果您要切换样式,请按照这种方式进行操作。 如果您还想使用该类来定位其他元素,则不仅要 使用,还可以使用:

  • 我知道PriorityQueues的迭代器没有返回正确的顺序,因此我查看顺序的能力受到限制--但是我可以看到元素离开队列的顺序,而且它显然没有按照我希望的路径运行。 建议?

  • 我正在研究一种算法,在该算法中,我希望在从该优先级队列中删除元素时,保持优先级队列中具有相同优先级的元素的FIFO顺序。 虽然,我已经看到了将自动递增的序列号作为辅助键的解决方案,并使用它来打破联系,但我需要类似的链接,但我面临的问题是,我想要比较的元素-TestItemChange(下面示例中的类)没有实现Compariable,我无法(也不想)修改它以使其实现。所以现在,在优先级队列中没有FI

  • 我需要在多个线程中使用来自Kafka分区的记录,每个线程上有唯一的记录要处理。我有以下代码,我不知道是什么错误 结果 应为:

  • 问题内容: 我有一个庞大的产品数据库,每个星期天,我的脚本都会激活50个新产品。问题是,根据我脚本中的某些规则,我发现我应该优先激活一些产品。(以您的示例为例,它应该始终优先激活其中名称为“ hello kitty”和“ meshuggah”的产品,然后再进行其他操作) 我的数据库表包含有关产品的信息和唯一ID。可以说脚本找到了这些ID中的5个,标题中有hello kitty。 因此,我该如何进行

  • 我正在使用std::priority\u队列和std::vector中的一些自定义对象。现在假设在调用top()函数时,有具有相同优先级的对象,我会按从最旧到最新的顺序获取它们。那么我的问题是,有没有可能改变这种行为,以便top()在优先级相同的情况下返回最近的对象?