Spring Boot(五十二):自动装配之自定义starter实现
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
需求
自定义redis-starter。要求当导入redis坐标时SpringBoot自动创建Jedis的Bean
实现步骤
1 项目结构如下
2 创建 redis-spring-boot-autoconfigure 模块
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
3 创建redis-spring-boot-starte模块依赖redis-spring-boot-autoconfigure的模块
<dependency>
<groupId>com.example</groupId>
<artifactId>autoconfigure</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
4 在redis-spring-boot-autoconfigure模块中初始化Jedis的Bean。并定义META-INF/spring.factories 文件
package com.example.redis.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "redis")
public class RedisProperties {
private String host = "localhost";
private int port = 6379;
private String password ="123456";
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;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
package com.example.redis.config;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import redis.clients.jedis.Jedis;
@Configuration
@EnableConfigurationProperties(RedisProperties.class)
@ConditionalOnClass(Jedis.class)
public class RedisAutoConfiguration {
/**
* 提供Jedis的bean
*/
@Bean
@ConditionalOnMissingBean(name = "jedis")
public Jedis jedis(RedisProperties redisProperties) {
System.out.println("RedisAutoConfiguration....");
Jedis jedis = new Jedis(redisProperties.getHost(), redisProperties.getPort());
jedis.auth(redisProperties.getPassword());
return jedis;
}
}
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.redis.config.RedisAutoConfiguration
5 在测试spring-boot-jedis模块中引入自定义的redis-starter依赖测试获取Jedis的Bean操作redis。
<dependency>
<groupId>com.example</groupId>
<artifactId>starter</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
配置文件
spring.redis.port=6379
spring.redis.host=192.168.222.131
spring.redis.password=123456
package com.example.jedis;
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 SpringbootJedisApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(SpringbootJedisApplication.class, args);
Jedis jedis = context.getBean(Jedis.class);
System.out.println(jedis);
jedis.set("name","itcast");
String name = jedis.get("name");
System.out.println(name);
}
}
代码下载地址https://download.csdn.net/download/u013938578/87387320