自定义Sprin-Boot-Starter

文章目录

  • 1 创建redis-spring-boot-autoconfigure模块
    • 1.1 新建RedisProperties配置类
    • 1.2 新建RedisAutoConfiguration,注入bean
    • 1.3 新建spring.factories
    • 1.4 pom的依赖如下
  • 2 创建redis-spring-boot-starter模块,并依赖redis-spring-boot-autoconfigure的模块
  • 3 新建测试模块,并引入自定义的redis-starter依赖,测试获取Jedis的Bean,并操作redis
    • 3.1 测试模块的pom中引入自己定义的starter
    • 3.2 测试模块的启动类里测试

1 创建redis-spring-boot-autoconfigure模块

1.1 新建RedisProperties配置类

import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix = "redis")
public class RedisProperties {

    private String host = "localhost";

    private int port = 6379;

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }
}

1.2 新建RedisAutoConfiguration,注入bean

import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import redis.clients.jedis.Jedis;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableConfigurationProperties(RedisProperties.class)
@ConditionalOnClass(Jedis.class)
public class RedisAutoConfiguration {

    /**
     * 提供Jedis jedis
     * @return
     */
    @Bean
    @ConditionalOnMissingBean(name = "jedis")
    public Jedis jedis(RedisProperties redisProperties){
        System.out.println("RedisAutoConfiguration.......");
        return new Jedis(redisProperties.getHost(),redisProperties.getPort());
    }
}

1.3 新建spring.factories

  • 路径为:resources\META-INF\spring.factories
  • 内容如下:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.yunfeng.redis.config.RedisAutoConfiguration

1.4 pom的依赖如下

	<dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starterartifactId>
        dependency>

        
        <dependency>
            <groupId>redis.clientsgroupId>
            <artifactId>jedisartifactId>
        dependency>
    dependencies>

2 创建redis-spring-boot-starter模块,并依赖redis-spring-boot-autoconfigure的模块

  • 此模块只是包装作用,无需其他代码
  • pom依赖如下:
	<dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starterartifactId>
        dependency>

        
        <dependency>
            <groupId>com.yunfenggroupId>
            <artifactId>redis-spring-boot-autoconfigureartifactId>
            <version>0.0.1-SNAPSHOTversion>
        dependency>
    dependencies>

3 新建测试模块,并引入自定义的redis-starter依赖,测试获取Jedis的Bean,并操作redis

3.1 测试模块的pom中引入自己定义的starter

	
        <dependency>
            <groupId>com.examplegroupId>
            <artifactId>redis-spring-boot-starterartifactId>
            <version>0.0.1-SNAPSHOTversion>
        dependency>

3.2 测试模块的启动类里测试

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import redis.clients.jedis.Jedis;

@SpringBootApplication
public class SpringbootConditionApplication {

    public static void main(String[] args) {
        //启动Springboot的应用,返回Spring的IOC容器
        ConfigurableApplicationContext context = SpringApplication.run(SpringbootConditionApplication.class, args);

        Jedis jedis = context.getBean(Jedis.class);
        System.out.println(jedis);

        jedis.set("name","husiyuan");
        String name = jedis.get("name");
        System.out.println("name = " + name);
    }

    //若存在则不使用自定义starter中的Jedis
    @Bean
    public Jedis jedis(){
        return new Jedis("localhost",6379);
    }

}

你可能感兴趣的:(java,redis,spring,boot)