@Configuration
@ComponentScan(basePackageClasses = BeanA.class)
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
public class Config {
@Bean
public BeanA beanA(){
return new BeanA();
}
@Bean
public BeanB beanB{
return new BeanB();
}
}
@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
}
@EnableAutoConfiguration(excludeName = {"org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration"})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
4条答案
按热度按时间xzv2uavs1#
Sping Boot 中的@ComponentScan注解和@EnableAutoConfiguration注解之间有何区别?
@EnableAutoConfiguration
注解会让Sping Boot 根据您新增的jar相依性,“猜测”您要如何设定Spring。例如,如果HSQLDB位于类别路径上,而您尚未手动设定任何数据库联机Bean,则Spring会自动设定内存中的数据库。@ComponentScan
指示Spring在指定的包中查找其他组件、配置和服务。Spring能够自动扫描、检测和注册预定义项目包中的Bean或组件。如果未指定包,则将当前类包作为根包。有必要加这些吗?
如果你需要Sping Boot 来自动配置你的每一件事,那么你就需要
@EnableAutoConfiguration
。你不需要手动添加它,Spring会根据你提供的注解在内部为你添加它。实际上,
@SpringBootApplication
注解等效于使用@Configuration
、@EnableAutoConfiguration
和@ComponentScan
及其默认属性。另请参阅:
alen0pnh2#
Sping Boot 的主要优点之一是它的annotation driven,而不是传统的基于xml的配置,@EnableAutoConfiguration基于其包含的jar文件自动配置Spring应用程序,它基于pom.xml中的依赖关系设置默认值或帮助器。自动配置通常基于classpath和定义的bean应用。因此,我们不需要定义任何DataSource,DataManagerFactory,transactionManager等,并神奇地基于类路径,Sping Boot 会自动创建适当的bean并为我们注册它们。例如,当您的classpath上有一个tomcat-embedded.jar时,您可能需要一个TomcatEmbeddedServletContainerFactory。(除非您定义了自己的EmbeddedServletContainerFactory bean)。@EnableAutoConfiguration有一个exclude属性来禁用自动配置显式否则我们可以简单地从pom.xml中排除它,例如,如果我们不希望Spring配置tomcat,则从spring-boot-starter-web中排除spring-bootstarter-tomcat。
@ BifentScan为spring组件扫描提供了作用域,它只是遍历 * 提供的基本包 * 并拾取@Bean或@Autowired等所需的依赖项,在典型的Spring应用程序中,@ BifentScan用于配置类,用@Configuration注解的类。Configuration类包含用@Bean注解的方法。这些@ Bean annotated方法生成由Spring容器管理的beans。这些beans将由@ WebentScan annotation自动检测。有一些annotation可以使beans自动检测,如@Repository,@Service,@Controller,@Configuration,@Component.在下面的代码中,Spring从包含BeanA类的包开始扫描。
字符串
lsmd5eda3#
spring Boot 中的**
@EnableAutoConfiguration
**会根据您在类别路径中新增的jar,告知您要如何设定spring。例如,如果您在类别路径中新增spring-boot-starter-web
相依性,它会自动设定Tomcat和Spring MVC。字符串
可以将
@EnableAutoConfiguration
注解与@Configuration
注解沿着使用,示例如下:
型
@SpringBootApplication
是在Sping Boot 1.2中引入的@EnableAutoConfiguration
的较新版本。@SpringBootApplication
是三个注解的组合,@Configuration
-用于基于java的配置类。@ComponentScan
-要启用组件扫描,将自动扫描应用了@SpringBootApplication的根包下的所有包和子包。@EnableAutoConfiguration
-启用类基于类路径中添加的jar。
**
@ComponentScan
**启用组件扫描,以便在Spring的应用程序上下文中自动发现Web控制器类和您创建的其他组件并将其注册为Bean。您可以指定为自动发现和注册Bean而扫描的基础包。其中一个可选元素是,
示例,
型
flvtvl504#
只要确保
@SpringBootApplication
工作得最好,如果你把someNameAppication类放在项目文件夹之外,比如控制器,服务,模型等。它会扫描整个目录。请确保巧妙地打包它。