源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

初识Spring Boot框架之Spring Boot的自动配置

  • 时间:2020-05-23 04:29 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:初识Spring Boot框架之Spring Boot的自动配置
在上篇博客[url=http://www.1sucai.cn/article/111197.htm]初识Spring Boot框架[/url]中我们初步见识了SpringBoot的方便之处,很多小伙伴可能也会好奇这个spring Boot是怎么实现自动配置的,那么今天我就带小伙伴我们自己来实现一个简单的Spring Boot 自动配置的案例,看看这一切到底是怎么发生的。 假设我的需求是这样的:当我的项目中存在某个类的时候,系统自动为我配置该类的Bean,同时,我这个Bean的属性还可以在application.properties中进行配置,OK,就这样一个需求,我们来看看怎么实现。 [b]1、新建starter的Maven项目[/b] 我这里以IntelliJ IDEA创建Project为例,其实很简单,创建一个Maven项目,但是注意创建的时候选择quickstart,步骤如下: [img]http://files.jb51.net/file_images/article/201704/2017041411482624.png[/img]   [img]http://files.jb51.net/file_images/article/201704/2017041411482625.png[/img]   [img]http://files.jb51.net/file_images/article/201704/2017041411482626.png[/img]   [img]http://files.jb51.net/file_images/article/201704/2017041411482627.png[/img]   OK,这样我们就创建好一个Project了。 [b]2.添加依赖[/b] 由于我们要使用Spring Boot的自动配置功能,所以在工程创建成功之后首先要添加Spring Boot自身的自动配置作为依赖,如下:
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-autoconfigure</artifactId>
   <version>1.4.2.RELEASE</version>
  </dependency>
[b]3.属性配置[/b]
@ConfigurationProperties(prefix = "hello")
public class HelloServiceProperties {
  private static final String MSG = "world";
  private String msg = MSG;

  public String getMsg() {
    return msg;
  }

  public void setMsg(String msg) {
    this.msg = msg;
  }
}

这里就是一个简单的类,和上篇博客中我们提到的 类型安全的属性获取是一致的,这里属性的值我们可以在application.properties中来直接设置,如果不设置的话默认为world。 [b]4.判断依据类[/b]
public class HelloService {
  private String msg;
  public String sayHello(){
    return "hello " + msg;
  }

  public String getMsg() {
    return msg;
  }

  public void setMsg(String msg) {
    this.msg = msg;
  }
}

我们一会的例子就是根据这个类是否存在来创建这个类的Bean,当然这个类也可以是第三方类库。 [b]5.自动配置类[/b]
@Configuration
@EnableConfigurationProperties(HelloServiceProperties.class)
@ConditionalOnClass(HelloService.class)
@ConditionalOnProperty(prefix = "hello",value = "enable",matchIfMissing = true)
public class HelloServiceAutoConfiguration {
  @Autowired
  private HelloServiceProperties helloServiceProperties;
  @Bean
  public HelloService helloService() {
    HelloService helloService = new HelloService();
    helloService.setMsg(helloServiceProperties.getMsg());
    return helloService;
  }
}
这里@ConditionalOnClass注解主要是用来判断HelloService这个类在路径中是否存在,在存在且容器中没有该类的Bean的情况下系统会自动配置需要的Bean,@ConditionalOnProperty注解则表示指定的属性要满足的条件,在helloService方法中我们则使用了HelloServiceProperties提供的参数。 [b]6.注册配置[/b] 在resources目录下新建META-INF目录,然后在META-INF目录下创建spring.factories文件,文件内容如下,表示设置自动配置类的位置,若有多个配置类用”,”隔开即可。:
[url=http://www.1sucai.cn/article/111197.htm]初识Spring Boot框架[/url]),创建成功之后选择新建的Module按F4打开Module设置,然后选择右边的加号添加依赖,如下: [img]http://files.jb51.net/file_images/article/201704/2017041411482628.png[/img] [img]http://files.jb51.net/file_images/article/201704/2017041411482629.png[/img] 然后在新建Module的pom.xml文件中添加如下依赖:
<dependency>
      <groupId>org.sang</groupId>
      <artifactId>org.sang.mystarter</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
实际上就是我们刚刚创建的自动配置文件的坐标。然后新Module的入口类中添加如下代码:
@Autowired
  private HelloService helloService;

  @RequestMapping("/")
  public String index(){
    return helloService.sayHello();
  }
使用刚刚创建的HelloService,如果需要我们可以在application.properties中添加如下配置:
hello.msg = 卖花担上看桃李, 拍酒楼头听管弦。
运行Module,然后在浏览器中访问,结果如下: [img]http://files.jb51.net/file_images/article/201704/2017041411482630.png[/img] OK,这就是一个简单的自定义自动配置类。 本案例下载地址:[url=https://github.com/lenve/JavaEETest/tree/master/Test19-MyStarter]本案例GitHub地址[/url] 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程素材网。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部