我需要一种机制来确定哪些组件应该包含在应用程序上下文中。目前,我使用@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适用于我,但仅适用于配置,不适用于注册控制器组件。控制器或组件是否具有相同性?
答案 0 :(得分:0)
如果使用的是Spring 3.1,那么在条件性地需要在应用程序上下文中包含bean的情况下,您应该使用Spring Profiles。它使设置测试非常容易
如果您使用的是Spring 4,并且您的需求不在个人资料中,那么您可以查看Spring的@Conditional support
如果您使用这种方式,则无需使用@Include
。只需定期@Configuration
个类,其中整个类使用@Profile
或特定@Bean
方法注释(仅在Spring 4中受支持)
然后,您可以使用@ActiveProfiles