Java 如何决定哪些spring组件应该添加到应用程序上下文中?
我需要一种机制来描述哪些组件应该包含在应用程序上下文中。目前,我使用@Import。无论它是否工作,@Import仅用于@Configuration。还有别的选择吗 编辑: 我使用@ComponentScan注册springbean和组件。我有一个带有带@Controller注释的控制器的目录。出于测试目的,我不想注册所有控制器,只想注册特定的控制器。我能用像这样的东西吗 目前我使用Java 如何决定哪些spring组件应该添加到应用程序上下文中?,java,spring,spring-mvc,Java,Spring,Spring Mvc,我需要一种机制来描述哪些组件应该包含在应用程序上下文中。目前,我使用@Import。无论它是否工作,@Import仅用于@Configuration。还有别的选择吗 编辑: 我使用@ComponentScan注册springbean和组件。我有一个带有带@Controller注释的控制器的目录。出于测试目的,我不想注册所有控制器,只想注册特定的控制器。我能用像这样的东西吗 目前我使用 @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicati
@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 {}
@导入适用于我,但它仅适用于配置,不适用于注册控制器组件。控制器或组件是否有一个均衡器?如果您使用的是Spring 3.1,那么您确实应该在有条件地需要在应用程序上下文中包含bean的情况下使用它。这使得设置测试非常容易 如果您使用的是Spring4,并且概要文件中没有涵盖您的需求,那么您可以查看Spring的@Conditional 如果使用这种方式,则无需使用
@Include
。只需使用常规的@Configuration
类,其中整个类都用@Profile
或特定的@Bean
方法进行注释(仅在Spring 4中支持)
然后,您可以使用
@ActiveProfiles
profiles激活特定测试所需的任何配置文件?导入选择器?请更具体地说明您需要什么。有什么理由不在您的测试配置中声明特定的Bean吗?我只知道注册Bean的“@ComponentScan”,当然还有“@Bean”。如何仅声明特定Bean?只需在控制器类中使用@Bean
。