Java工具類中注入Bean

  • 需求描述:

編寫一個操做Redis的工具類,在該類中須要注入org.springframework.data.redis.core.RedisTemplate ,而後在static方法中調用 redisTemplatehtml

  • 解決方法:

  1. 爲靜態屬性設置非靜態的setter
    在RedisUtil中添加以下代碼:
private static RedisTemplate<String, Object> redisTemplate;
public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate){
    RedisUtil.redisTemplate = redisTemplate;
}

可是這樣作須要一個揭露該setter的bean實例(筆者注:該方法還沒實踐過,方法2是可行的)。java

  1. 經過org.springframework.beans.factory.config.MethodInvokingFactoryBean 來調用一個靜態setter
    在RedisUtil中添加以下代碼:
private static RedisTemplate<String, Object> redisTemplate;    
public static void setRedisTemplate(RedisTemplate<String, Object> redisTemplate){
    RedisUtil.redisTemplate = redisTemplate;
}

在配置文件中添加以下配置:redis

<bean
		class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
		<property name="staticMethod" value="org.project.utils.RedisUtil.setRedisTemplate" />
		<property name="arguments">
			<list>
				<ref bean="redisTemplate" />
			</list>
		</property>
</bean>```

- ###參考:
1. [How to make spring inject value into a static field](https://stackoverflow.com/questions/11324372/how-to-make-spring-inject-value-into-a-static-field)

- ###補充:
歡迎你們分享你的想法和實踐。
相關文章
相關標籤/搜索