Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何决定哪些spring组件应该添加到应用程序上下文中?_Java_Spring_Spring Mvc - Fatal编程技术网

Java 如何决定哪些spring组件应该添加到应用程序上下文中?

Java 如何决定哪些spring组件应该添加到应用程序上下文中?,java,spring,spring-mvc,Java,Spring,Spring Mvc,我需要一种机制来描述哪些组件应该包含在应用程序上下文中。目前,我使用@Import。无论它是否工作,@Import仅用于@Configuration。还有别的选择吗 编辑: 我使用@ComponentScan注册springbean和组件。我有一个带有带@Controller注释的控制器的目录。出于测试目的,我不想注册所有控制器,只想注册特定的控制器。我能用像这样的东西吗 目前我使用 @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicati

我需要一种机制来描述哪些组件应该包含在应用程序上下文中。目前,我使用@Import。无论它是否工作,@Import仅用于@Configuration。还有别的选择吗

编辑:

我使用@ComponentScan注册springbean和组件。我有一个带有带@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 {}

@导入适用于我,但它仅适用于配置,不适用于注册控制器组件。控制器或组件是否有一个均衡器?

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

如果您使用的是Spring4,并且概要文件中没有涵盖您的需求,那么您可以查看Spring的@Conditional

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


然后,您可以使用
@ActiveProfiles

profiles激活特定测试所需的任何配置文件?导入选择器?请更具体地说明您需要什么。有什么理由不在您的测试配置中声明特定的Bean吗?我只知道注册Bean的“@ComponentScan”,当然还有“@Bean”。如何仅声明特定Bean?只需在控制器类中使用
@Bean