服务器之家

服务器之家 > 正文

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

时间:2020-09-11 10:29     来源/作者:_江南一点雨

在上篇博客初识spring boot框架中我们初步见识了springboot的方便之处,很多小伙伴可能也会好奇这个spring boot是怎么实现自动配置的,那么今天我就带小伙伴我们自己来实现一个简单的spring boot 自动配置的案例,看看这一切到底是怎么发生的。

假设我的需求是这样的:当我的项目中存在某个类的时候,系统自动为我配置该类的bean,同时,我这个bean的属性还可以在application.properties中进行配置,ok,就这样一个需求,我们来看看怎么实现。

1、新建starter的maven项目

我这里以intellij idea创建project为例,其实很简单,创建一个maven项目,但是注意创建的时候选择quickstart,步骤如下:

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

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

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

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

ok,这样我们就创建好一个project了。

2.添加依赖

由于我们要使用spring boot的自动配置功能,所以在工程创建成功之后首先要添加spring boot自身的自动配置作为依赖,如下:

?
1
2
3
4
5
<dependency>
 <groupid>org.springframework.boot</groupid>
 <artifactid>spring-boot-autoconfigure</artifactid>
 <version>1.4.2.release</version>
</dependency>

3.属性配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
@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。

4.判断依据类

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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,当然这个类也可以是第三方类库。

5.自动配置类

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@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提供的参数。

6.注册配置

在resources目录下新建meta-inf目录,然后在meta-inf目录下创建spring.factories文件,文件内容如下,表示设置自动配置类的位置,若有多个配置类用”,”隔开即可。:

 

复制代码 代码如下:

org.springframework.boot.autoconfigure.enableautoconfiguration=org.sang.helloserviceautoconfiguration

 

正常情况下我们按步骤一创建出来的project是没有resources这个文件夹的,在intellij idea这个工具中,我们需要先创建一个directory,然后将之设置为resources root即可,设置方式如下:选中resources目录右键单击–》mark directory as–》resource root。

7.在项目中使用

ok,经过上面几个步骤我们的自动配置功能就算死写好了,接下来我们要在自己的项目中来使用它了,正常情况下做好自动配置类之后我们需要将之上传到 maven 私服上然后直接在项目中引用,也可以将之安装到本地库,这里我选择后者的一个简化方式,直接创建module来引用这个自动配置module(如果小伙伴是用sts或者myeclipse之类的开发工具直接创建新工程然后添加引用类库即可)。

创建module方式很简单,选中刚才的project右键单击,new一个module,这个module是一个springboot项目(不清楚怎么创建springboot项目可以查看这篇文章初识spring boot框架),创建成功之后选择新建的module按f4打开module设置,然后选择右边的加号添加依赖,如下:

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

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

然后在新建module的pom.xml文件中添加如下依赖:

?
1
2
3
4
5
<dependency>
      <groupid>org.sang</groupid>
      <artifactid>org.sang.mystarter</artifactid>
      <version>1.0-snapshot</version>
    </dependency>

实际上就是我们刚刚创建的自动配置文件的坐标。然后新module的入口类中添加如下代码:

?
1
2
3
4
5
6
7
@autowired
  private helloservice helloservice;
 
  @requestmapping("/")
  public string index(){
    return helloservice.sayhello();
  }

使用刚刚创建的helloservice,如果需要我们可以在application.properties中添加如下配置:

?
1
hello.msg = 卖花担上看桃李, 拍酒楼头听管弦。

运行module,然后在浏览器中访问,结果如下:

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

ok,这就是一个简单的自定义自动配置类。

本案例下载地址:本案例github地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://blog.csdn.net/u012702547/article/details/53750449

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享 2020-04-07
电视剧《琉璃》全集在线观看 琉璃美人煞1-59集免费观看地址
电视剧《琉璃》全集在线观看 琉璃美人煞1-59集免费观看地址 2020-08-12
最新idea2020注册码永久激活(激活到2100年)
最新idea2020注册码永久激活(激活到2100年) 2020-07-29
返回顶部