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

我们可以根据注释条件过滤Spring依赖项注入中的bean创建吗

费明诚
2023-03-14

我正在努力实现以下目标。这可能是一个愚蠢的问题,但我想知道这是否可行,或者是否有其他方法可以做到这一点。

-- src
   --test
    --pkg1
       --Pkg1_class1
       --Pkg1_class2
    --pkg2
       --Pkg2_class1
       --Pkg2_class2

    --tests
       --testPkg1
          --Pkg1_TestClass1
       --testPkg2
          --Pkg2_TestClass1

我对所有需要注入的类都使用了@Component注释,效果很好。

但我有一个要求,当我从testPkg1运行测试时,我希望spring DI只创建这些对象所需的bean,即只为上面pkg1中的类创建bean。同样,当我从testPkg2运行测试时,我不想为pkg1中的类创建bean,因为我不需要它们,或者根本不打算将它们用于这些测试。

我知道我们正在告诉spring扫描需要注入的包。想知道有没有一种方法可以根据注释或类似的条件来过滤它。如果我的理解有误或有问题,请随时纠正我。非常感谢。

共有1个答案

葛季萌
2023-03-14

正如@Giorgi Tsiklauri在评论中提到的,您可以使用个人资料,也可以使用

EnableAutoConfiguration的排除属性:

..
@EnableAutoConfiguration(exclude={Class1ofPkg2.class,Class2ofPkg2.class ,..})
public class YourTestClassofPkg1{
 类似资料:
  • 我想向Springbean注入一个单例对象依赖关系。问题是我无法访问和修改要注入其对象的类。让我描述一下这个例子。 所以我有我的接口,以及这个接口的实现,如下所示。 然后在我的配置类中,我正在创建一个bean,但是我需要在构造函数中向它传递对象,问题是我不能使成为bean,因为它来自外部包,我不能修改它。 所以我想做的是,能够将/autowire参数传递给bean。目前IntelliJ给我一个错误

  • 17. Spring的bean以及依赖注入 您可以自由使用任何标准的Spring Framework技术来定义您的bean及其注入的依赖。为简单起见,我们经常发现结合@Autowired构造方法注入来使用@ComponentScan查找bean效果非常好。 如果您按照上述建议(将您的application类放置于根包中),则可以添加@ComponentScan注解而无需任何参数。您所有的程序组件(

  • 我有一个Spring启动应用程序,我最近从v1.3.3. RELEASE升级到v1.4.2. RELEASE。 用于我在v1中的集成测试。3.3,我有一个豆子,我能够成功地监视它。我在运行测试时,配置文件,下面的被激活,而不是应用程序的。 我正在升级到v1。4.2.发布并希望使用spyBean注释模拟单个方法,而不依赖于概要文件。 我对我的测试方法做了以下改变,以尝试它- 然而,当我尝试上述方法时

  • BeanCreationException:创建名为“Vote Controller”的bean时出错:autowired依赖项的注入失败;嵌套的异常是org.springframework.beans.factory.beanCreationException:不能autowire字段:com.mindtree.service.voteservice com.mindtree.controlle

  • 当有多个具有相同名称/类型的bean时,我对Spring中的DI注入机制有点困惑。根据Pivotal“核心Spring”课程的考试幻灯片,Spring对相同豆子的行为可以归结为: 可以多次定义同一bean Spring注入上次定义的bean 使用订单可以修改加载机制(从而修改最后加载哪个bean) 然而,在下面的示例中,Spring将忽略任何顺序注释,并从Import语句中最后提到的Config类

  • 我有一个集成了spring框架的maven项目,我使用这个项目为移动应用程序构建web服务。当我在AWS ubuntu服务器上部署该项目时,该项目给出了BeanCreationException并且它在Tomcat7上运行失败。当我在本地环境中运行它时,它工作得很好。下面是Tomcat7的错误日志。 TIA