内容简介:自动配置好像是魔术。其实,它就是将检查类路径classpath中的依赖关系,并且在某些情况下它会配置某些东西,比如当它检测到数据库驱动程序时,就会配置数据库。比如我们在pom.xml中配置:h2是一个内存数据库,然后我们希望通过JPA使用它,再配置一下JPA:
自动配置好像是魔术。其实,它就是将检查类路径classpath中的依赖关系,并且在某些情况下它会配置某些东西,比如当它检测到数据库驱动程序时,就会配置数据库。
比如我们在pom.xml中配置:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
h2是一个内存数据库,然后我们希望通过JPA使用它,再配置一下JPA:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
然后你声明一个接口类,注意是接口,不是普通类:
public interface ApplicantRepository extends JpaRepository<Applicant, Long> {
}
这样,你就可以通过下面save命令保存数据到H2中。
applicantRepository.save(applicant);
首先,Spring Boot会类路径中搜索带@Configuration注释的类,也就是说,pom.xml配置的JPA和H2这两个Jar包中带有@Configuration注释。
所以,使用@EnableAutoConfiguration就像使用@Configuration注释一样。它根据我们在@Configuration注释的配置类中定义的@Bean方法配置进行自动wire配对(依赖注入配对)。
Spring Boot对于每个找到的类,它会使用各种注释进行评估,如@Conditional,如果特定配置应该被包含,那么将其添加到Spring Context中。
@EnableAutoConfiguration还执行其他配置,包括配置/调用帮助程序组件(如Web应用程序中的嵌入式tomcat)。此机制基于类路径中可用的jar依赖项工作。jar通常通过启动器依赖项提供(前面pom.xml中JPA和H2配置的就是这两个组件的启动器starter) ,但这不是绝对的要求。这两件事(启动器和自动配置)并不依赖于彼此。
我们可以为我们自己的库使用相同的机制,即所谓的启动器Starter ,为你的lib提供了一个配置类,负责设置你的东西,并使用条件注释来决定何时应该包含它。
下面看看@Configuration具体应用:
@Configuration
public class EnabledAutoConfigExample {
@Bean
public MyBean myBean () {
return new MyBean();
}
}
在这个配置类里面,我们生成了两个@Bean,MyBean的实例在其他地方会需要,我们在这里准备好,以供别人通过@autowired使用它,因为配置类本身被注册为Spring容器的bean。
这段等同于:
<bean name="myBean" class="spring.example.MyBean"/>
配置类所有方法都会在多次调用时返回相同的实例(如果它们是单例作用域,这是默认作用域)。
Spring Boot
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Haskell趣学指南
[斯洛文尼亚] Miran Lipovaca / 李亚舟、宋方睿 / 人民邮电出版社 / 2014-1
《haskell趣学指南》是一本讲解haskell这门函数式编程语言的入门指南,语言通俗易懂,插图生动幽默,示例短小清晰,结构安排合理。书中从haskell的基础知识讲起,涵盖了所有的基本概念和语法,内容涉及基本语法、递归、类型和类型类、函子、applicative 函子、monad、zipper及所有haskell重要特性和强大功能。 《haskell趣学指南》适合对函数式编程及haske......一起来看看 《Haskell趣学指南》 这本书的介绍吧!