springboot 整合redis_springboot自动装配原理详解

论坛 期权论坛     
选择匿名的用户   2021-5-30 02:30   334   0
<div>
<h2><b>1)传统ssm整合redis的时候 需要在xml的配置文件中 进行大量的配置Bean</b></h2>
<p> 我们在这里使用springboot来代替ssm的整合,只是通过xml的形式来整合redis</p>
<p><b>第一步:加入配置</b></p>
<div class="blockcode">
  <pre class="blockcode"><code>&lt;dependency&gt;
&lt;groupId&gt;org.springframework.data&lt;/groupId&gt;
&lt;artifactId&gt;spring-data-redis&lt;/artifactId&gt;
&lt;version&gt;2.0.9.RELEASE&lt;/version&gt;
&lt;/dependency&gt;

&lt;dependency&gt;
&lt;groupId&gt;redis.clients&lt;/groupId&gt;
&lt;artifactId&gt;jedis&lt;/artifactId&gt;
&lt;version&gt;2.9.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre>
</div>
<p><b>第二步: 配置xml的bean的配置</b></p>
<div class="blockcode">
  <pre class="blockcode"><code>    //配置连接池
    &lt;bean id&#61;&#34;poolConfig&#34; class&#61;&#34;redis.clients.jedis.JedisPoolConfig&#34;&gt;
        &lt;property name&#61;&#34;minIdle&#34; value&#61;&#34;10&#34;&gt;&lt;/property&gt;
        &lt;property name&#61;&#34;maxTotal&#34; value&#61;&#34;20&#34;&gt;&lt;/property&gt;
    &lt;/bean&gt;

    //配置连接工厂
    &lt;bean id&#61;&#34;jedisConnectionFactory&#34; class&#61;&#34;org.springframework.data.redis.connection.jedis.JedisConnectionFactory&#34;&gt;
        &lt;property name&#61;&#34;hostName&#34; value&#61;&#34;47.104.128.12&#34;&gt;&lt;/property&gt;
        &lt;property name&#61;&#34;password&#34; value&#61;&#34;123456&#34;&gt;&lt;/property&gt;
        &lt;property name&#61;&#34;database&#34; value&#61;&#34;0&#34;&gt;&lt;/property&gt;
        &lt;property name&#61;&#34;poolConfig&#34; ref&#61;&#34;poolConfig&#34;&gt;&lt;/property&gt;
    &lt;/bean&gt;


    //配置 redisTemplate 模版类
    &lt;bean id&#61;&#34;redisTemplate&#34; class&#61;&#34;org.springframework.data.redis.core.RedisTemplate&#34;&gt;
        &lt;property name&#61;&#34;connectionFactory&#34;  ref&#61;&#34;jedisConnectionFactory&#34;/&gt;
        &lt;!--如果不配置Serializer,那么存储的时候缺省使用String,如果用User类型存储,那么会提示错误User can&#39;t cast to String!!  --&gt;
        &lt;property name&#61;&#34;keySerializer&#34;&gt;
            &lt;bean class&#61;&#34;org.springframework.data.redis.serializer.StringRedisSerializer&#34;/&gt;
        &lt;/property&gt;
        &lt;property name&#61;&#34;valueSerializer&#34;&gt;
            &lt;bean class&#61;&#34;org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer&#34;/&gt;
        &lt;/property&gt;
        &lt;property name&#61;&#34;hashKeySerializer&#34;&gt;
            &lt;bean class&#61;&#34;org.springframework.data.redis.serializer.StringRedisSerializer&#34;/&gt;
        &lt;/property&gt;
        &lt;property name&#61;&#34;hashValueSerializer&#34;&gt;
         &lt;bean class&#61;&#34;org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer&#34;/&gt;
        &lt;/property&gt;
    &lt;/bean&gt;</code></pre>
</div>
<p><b>第三步:导入配置</b></p>
<p><b>&#64;ImportResource(locations &#61; &#34;classpath:beans.xml&#34;) 可以导入xml的配置文件</b></p>
<div class="blockcode">
  <pre class="blockcode"><code>&#64;SpringBootApplication
&#64;ImportResource(locations &#61; &#34;classpath:beans.xml&#34;)
&#64;RestController
public class TulingOpenAutoconfigPrincipleApplication {

&#64;Autowired
private RedisTemplate redisTemplate;

public static void main(String[] args) {
  SpringApplication.run(TulingOpenAutoconfigPrincipleApplication.class, args);
}

&#64;RequestMapping(&#34;/testRedis&#34;)
public String testRedis() {
  redisTemplate.opsForValue().set(&#34;smlz&#34;,&#34;smlz&#34;);
  return &#34;OK&#34;;
}
}</code></pre>
</div>
<p><b>2)综上所述 我们发现,若整合redis的时候通过传统的整合,进行了大量的配置,那么我们来看下通过springboot自动装配整合的对比</b></p>
<p><b>导入依赖:</b></p>
<div class="blockcode">
  <pre class="blockcode"><code>  &lt;dependency&gt;
   &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
   &lt;artifactId&gt;spring-boot-starter-data-redis&lt;/artifactId&gt;
  &lt;/dependency&gt;</code></pre>
</div>
<p><b>修改yml配置文件</b></p>
<div class="blockcode">
  <pre class="blockcode"><code>spring.redis.host&#61;47.104.128.12
spring.redis.port&#61;6379
spring.redis.password&#61;123456</code></pre>
</div>
<p><b>直接使用(下述代码可以不要配置,为了解决保存使用jdk的序列方式才配置的)</b></p>
<div class="blockcode">
  <pre class="blockcode"><code> &#64;Bean
public RedisTemplate&lt;Object, Object&gt; redisTemplate(RedisConnectionFactory redisConnectionFactory)  {
  RedisTemplate&lt;Object, Object&gt; template &#61; new RedisTemplate&lt;&gt;();
  template.setDefaultSerializer(new Jackson2JsonRedisSerializer&lt;Object&gt;(Object.class));
  template.setConnectionFactory(redisConnectionFactory);
  return template;
}</code></pre>
</div>
<p><b>3)传统整合和springboot自动装配 优劣势分析。。。。。。。。。。。。</b></p>
<p><b>4)自动装配原理前的不得不说的几个注解</b></p>
<p><b>4.1)通过&#64;Import注解来导入ImportSelector组件</b></p>
<p><b>①:写一个配置类在配置类上标注一个&#64;Import的注解,</b></p>
<div class="blockcode">
  <pre class="blockcode"><code>&#64;Configuration
&#64;Import(value &#61; {Tuling
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP