springboot自定义redis-starter的实现

spring时代整合redis

spring我相信只要是一个Java开发人员我相信再熟悉不过了,几乎垄断了整个JavaEE的市场份额,话不多说进入正题。

首先看看我们在spring中整合redis需要做什么

1、首先maven工程的话不用想先导入依赖

<!-- jedis -->
  <dependency>
   <groupId>redis.clients</groupId>
   <artifactId>jedis</artifactId>
   <version>2.4.2</version>
  </dependency>
<!-- 2、spring整合Redis的jar包 -->
  <dependency>
   <groupId>org.springframework.data</groupId>
   <artifactId>spring-data-redis</artifactId>
   <version>1.4.2.RELEASE</version>
  </dependency>

2、在spring-xml中配置

<!-- 1、配置jedis连接池信息 -->
  <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
    <!-- 最大连接数-->
    <property name="maxTotal" value="http://www.cppcns.com/ruanjian/java/50"></property>
    <property name="maxIdle" value="http://www.cppcns.com/ruanjian/java/5"></property>
   	....... 这里省略一些更多配置
  </bean>
  
  <!--2、配置连接工厂JedisConnectionFactory-->
  <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
    <!--需要自定义一些工厂属性配置信息-->
    <!-- 服务器地址 -->
    <property name="hostName" value="http://www.cppcns.com/ruanjian/java/127.0.0.1"></property>
    <!-- 服务端口号 -->
    <property name="port" value="http://www.cppcns.com/ruanjian/java/6379"></property>
    <!-- 密码 -->
    <property name="password" value="http://www.cppcns.com/ruanjian/java/yichun"></property>
    <!-- 连接池配置:再把第一步配置好的连接池信息通过属性注入进来 否则会采用默认的连接池-->
    <property name="poolConfig" ref="jedisPoolConfig"></property>
  </bean>
  
	<!--  3、配置RedisTemplate模板  把第二步配置好的连接工厂JedisConnectionFactory通过属性注入到RedisTemplate模板中-->
  <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
    <property name="connectionFactory" ref="jedisConnectionFactory"></property>
 
  	  <!-- 配置一些key和value的序列化操作,可选操作 -->
    <property name="keySerializer">
      <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>
    </property>
    <property name="valueSerializer">
      <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>
    </property>
  </bean>

	4、这样子以后我们就可以在业务层通过 @Autowired 引用redis操作模板了
	 @Autowired
   RedisTemplate<String,String> redisTemplate;

3、上面就是spring使用redis的大致流程。

这样子看起来也还好啊?
但是每个项目都要去经过这么一系列繁琐的xml配置,这就是重复工作了。这时候就出现了“springboot” 就是专门去做这些整合的事情了,让我们不需要整合这些只需几行基础配置即可。

springboot 实现自动装配redis

在开始spring boot之前我们首先要来看几个注解,spring boot实现自定义装配的核心就是这几个注解:

1、@Import:Import注解的主要的作用是将bean导入到spring容器中,比如说要自定义一些bean交spring容器托管,这是我们就可以建一个配置类使用import注解专门去导入你自定义的一些bean到spring容器中。

2、@Bean:Bean注解告诉Spring这个方法将会返回一个对象,这个对象要注册为Spring应用上下文中的bean。通常方法体中包含了最终产生bean实例的逻辑。

3、@Component:通常是通过类路径扫描来自动侦测以及自动装配到Spring容器中。

4、@Configuration:来声明一个spring的配置类等同于spring中的xml文件,ConfigurationClassPostProcessor::enhanceConfigurationClasses这个方法是Configuration注解工作的核心方法,spring应用启动时所有的被@Configuration注解的类都会被spring cglib库生成cglib动态代理,然后其他地方通过@Autowired注解引入Student类对象就会被生成的configuration配置类生成的动态代理拦截,处理完后再调用原configuration注解类的student方法获取到Student实例。

5、@Conditiona:个人感觉主要是做一些判断条件的、只有当condition的machet匹配方法为 true 的时候【该方法内也是我们实现一些自定义逻辑判断的扩展点】,才会去加载该bean 否则不加载该bean。

springboot自定义redis-starter的实现

扫一扫手机访问