如何确定应将哪些弹簧组件添加到应用程序上下文中?

时间:2014-07-21 10:34:12

标签: java spring spring-mvc

我需要一种机制来确定哪些组件应该包含在应用程序上下文中。目前,我使用@Import。无论是否有效,@ Import仅适用于@Configuration。还有其他选择吗?

修改

我使用@ComponentScan来注册spring bean和组件。我有一个带有@Controller注释的控制器的目录。出于测试目的,我不想注册所有控制器,只是特定的。我可以使用像

这样的东西吗?

目前我使用

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = TestConfiguration.class)
@Transactional
@TransactionConfiguration(defaultRollback = true){/*testings*/}

@Configuration
@EnableAutoConfiguration
@ComponentScan(basePackageClasses = {AccountsRepository.class, LogoutService.class})
@Import({AccountCommandsController.class})
public class TestConfiguration {}

@Import适用于我,但仅适用于配置,不适用于注册控制器组件。控制器或组件是否具有相同性?

1 个答案:

答案 0 :(得分:0)

如果使用的是Spring 3.1,那么在条件性地需要在应用程序上下文中包含bean的情况下,您应该使用Spring Profiles。它使设置测试非常容易

如果您使用的是Spring 4,并且您的需求不在个人资料中,那么您可以查看Spring的@Conditional support

如果您使用这种方式,则无需使用@Include。只需定期@Configuration个类,其中整个类使用@Profile或特定@Bean方法注释(仅在Spring 4中受支持)

然后,您可以使用@ActiveProfiles

激活特定测试所需的任何配置文件