集成 spring-boot 组件攻略

集成 spring-boot 组件教程


为什么集成 spring-boot 组件

  • 随着 spring-cloud 的流行,功能化的集成spring-boot 组件是大势所趋
  • 集成 spring-boot 组件可以使得 spring-cloud 架构更加美观
  • 可以使得相似的功能重复使用,比如很多已经集成过的组件,如 mybatis,mq 等
  • 避免写很多的 xml 配置文件

如何集成

为了使得代码清晰,这里不写复杂的逻辑,就简单的获取一些配置,但愿部分钻牛角尖的同学放过我,说引入配置直接使用注解 @Value 就好,记住这边演示的是集成组件,具体集成什么样的组件,根据你自己的需求去做,在文章结尾我也会放两个我集成的组件案例。

引入依赖

依赖的引入,主要是读取一些配置和集成 spring-boot 组件

	
	<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <optional>true</optional>
    </dependency>


配置信息

一般在自己写的组件当中会读取一些配置作为初始变量,如数据库连接信息等

package com.wwjd.starter.configure;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * 读取配置
 *
 * @author 阿导
 * @CopyRight 万物皆导
 * @created 2018年07月31日 16:08:00
 * @Modified_By 阿导 2018/7/31 16:08
 */
@Order(Ordered.HIGHEST_PRECEDENCE)
@ConfigurationProperties(prefix = "log.wwjd")
public class DaoCofigure {
  
  /**
   * 配置信息
   */
  private Map<String, Instance> instances = new LinkedHashMap<>();
  
  /**
   * 返回实例
   *
   * @author 阿导
   * @time 2018/5/28 14:20
   * @CopyRight 万物皆导
   * @param
   * @return
   */
  public Map<String, Instance> getInstances() {
    return instances;
  }
  
  /**
   * 设置实例
   *
   * @author 阿导
   * @time 2018/5/28 14:20
   * @CopyRight 万物皆导
   * @param instances
   * @return
   */
  public void setInstances(Map<String, Instance> instances) {
    this.instances = instances;
  }
  
  /**
   * canal 配置类
   */
  public static class Instance {
    /**
     * 作者
     */
    private String author="阿导";
    /**
     * 版本号
     */
    private String version="1.0.0";
  
    public String getAuthor() {
      return author;
    }
  
    public void setAuthor(String author) {
      this.author = author;
    }
  
    public String getVersion() {
      return version;
    }
  
    public void setVersion(String version) {
      this.version = version;
    }
  }
}


核心代码

这里面主要写组件的核心内容,可能会很多,我这边作为案例就是读取初始的配置

package com.wwjd.starter.configure;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;

/**
 * 核心代码
 *
 * @author 阿导
 * @CopyRight 万物皆导
 * @created 2018年07月31日 16:19:00
 * @Modified_By 阿导 2018/7/31 16:19
 */
public class DaoConfiguration {
  /**
   * 配置注入
   */
  @Autowired
  DaoCofigure daoCofigure;

  
  @Bean
  public DaoCofigure dao(){
    System.out.println("进来了");
    return daoCofigure;
  }
}


加载生效

一般加载配置使其生效有两种方式,第一种使用注解,代码如下


package com.wwjd.starter.annotation;
import com.wwjd.starter.configure.DaoCofigure;
import com.wwjd.starter.configure.DaoConfiguration;
import org.springframework.context.annotation.Import;

import java.lang.annotation.*;

/**
 * 注解方式使得组件生效
 *
 * @author 阿导
 * @CopyRight 萬物皆導
 * @created 2018/5/28 14:08
 * @Modified_By 阿导 2018/5/28 14:08
 */

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Import({ DaoCofigure.class,DaoConfiguration.class})
public @interface EnableDao {
}


第二种方式是通过 spring.factories 自动配置,代码如下


## Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.wwjd.starter.configure.DaoConfiguration,com.wwjd.starter.configure.DaoCofigure


这两种方式根据需要进行选择,第一种方式需要在引入的项目中要在启动类上加上注解 @EnableDao,第二种方式引入即可使用,不过切记,二者只能选择其一对一个实体进行自动配置,因为单例模式决定的。

测试功能

这个测试比较简单,这里直接通过下面方式聚能获取到注入的 dao


package com.wwjd.test.controller;

import com.wwjd.starter.configure.DaoCofigure;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 *  测试类
 *
 * @author 阿导
 * @CopyRight 万物皆导
 * @created 2018年07月31日 17:22:00
 * @Modified_By 阿导 2018/7/31 17:22
 */
@RestController
public class TestController {
  
  /**
   * 注入
   */
  @Autowired
  private DaoCofigure dao;
  
  @RequestMapping("/daoCofigure")
  public DaoCofigure getDaoCofigure(){
    return dao;
  }
}


给出我过去写的两个案例

需要云服务器的不要错过优惠

阿里云低价购买云服务,值得一看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值