类中怎么使用在spring配置文件中已经创建好的bean呢

在整合redis+shiro遇到这样一个问题,在spring配置文件里面创建了一个这样的bean

  <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
        <property name="connectionFactory"   ref="connectionFactory" />
        <!--key 的存储不使用默认的 JDK 序列化,而是使用 StringRedisSerializer 的序列化方式-->
        <property name="hashKeySerializer" ref="stringRedisSerializer"/>
        <property name="keySerializer" ref="stringRedisSerializer"/>
    </bean>

然后在ShiroRedisCache类文件中,使用@Autowired注入的redisTemplate一直为空值

 @Autowired
    private RedisTemplate<Serializable,Serializable> redisTemplate;

但是使用加载配置文件的方式,就可以正常获得redisTemplate的值

 private static ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:spring.xml");

    private static RedisTemplate<Serializable,Serializable> redisTemplate = (RedisTemplate<Serializable, Serializable>) ac.getBean("redisTemplate");

请问哪位大神能够帮忙解答一下,应该怎么使用注解方式注入bean

1个回答

     @Autowired
    private RedisTemplate<Serializable,Serializable> redisTemplate;

粘贴到一个新建的类里面,只注入这一个,看有没注入。
排查和ShiroRedisCache有没有关系
2.

    @Autowired
    private RedisTemplate  redisTemplate;

去掉泛型再看一看,能不能注入

3.在一个方法里,调用ApplicationContextAware的方法,看看容器里到底有没有这个bean。有的话,看具体信息是什么

4.是不是xml没有加载,环境配错了

5.或许重启就好了

doncha
doncha 回复zhshchilss: 有试过,去掉泛型也是一样
8 个月之前 回复
zhshchilss
zhshchilss 回复doncha: 去掉泛型使用@Autowired也不行吗,我总觉得是泛型的问题。
8 个月之前 回复
doncha
doncha 额,我把@Autowired改成@Resource(name="redisTemplate")就可以了,虽然我不知道为什么....
8 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问