spring中通過ApplicationContext getBean獲取注入對象的方法實例
更新時間:2019年03月30日 11:05:20 作者:helentang1987
今天小編就為大家分享一篇關于spring中通過ApplicationContext getBean獲取注入對象的方法實例,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
用SpringContextUtil實現(xiàn)ApplicationContextAware
package util;
import java.util.Locale;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class SpringContextUtil
implements ApplicationContextAware
{
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext contex)
throws BeansException
{
System.out.println("--------------------contex---------"+contex);
SpringContextUtil.context = contex;
}
public static ApplicationContext getApplicationContext() {
return context;
}
public static Object getBean(String beanName) {
return context.getBean(beanName);
}
public static String getMessage(String key) {
return context.getMessage(key, null, Locale.getDefault());
}
}
工具類
package redis;
import redis.clients.jedis.JedisPool;
import util.SpringContextUtil;
public class RedisUtil {
private static JedisPool jedisPool;
static{
jedisPool = (JedisPool)SpringContextUtil.getBean("jedisPool");
}
public static JedisPool getJedisPool(){
if(jedisPool == null){
jedisPool = (JedisPool)SpringContextUtil.getBean("jedisPool");
}
return jedisPool;
}
public void flusDB(){
jedisPool.getResource().flushDB();
}
public static String set(String key,String value){
return jedisPool.getResource().set(key, value);
}
public static String get(String key){
return jedisPool.getResource().get(key);
}
public static Long del(String key){
return jedisPool.getResource().del(key);
}
}
在Spring的配置文件中配置這個類,Spring容器會在加載完Spring容器后把上下文對象調用這個對象中的setApplicationContext方法
<!--1 自動掃描 將標注Spring注解的類自動轉化Bean--> <context:component-scan base-package="com.first,com.util" /> <!--2 加載數(shù)據(jù)資源屬性文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:jdbc.properties</value> <value>classpath:redis.properties</value> </list> </property> </bean> <bean id="springContextUtil" class="util.SpringContextUtil"></bean> <import resource="redis-config.xml"/> 在web項目中的web.xml中配置加載Spring容器的Listener <!-- 初始化Spring容器,讓Spring容器隨Web應用的啟動而自動啟動 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
spring配置文件注入Bean類
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="300" /> <!-- 最大能夠保持idel狀態(tài)的對象數(shù) -->
<property name="testOnBorrow" value="true" /> <!-- 當調用borrow Object方法時,是否進行有效性檢查 -->
<property name="maxActive" value="200" />
<property name="minIdle" value="10"/>
<property name="maxWait" value="300" />
<property name="testOnReturn" value="true" />
<property name="testWhileIdle" value="true" />
</bean>
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg name="poolConfig" ref="jedisPoolConfig" />
<constructor-arg name="host" value="${redis_addr}" />
<constructor-arg name="port" value="${redis_port}" type="int" />
<constructor-arg name="timeout" value="${redis_timeout}" type="int" />
<constructor-arg name="password" value="#{'${redis_password}'!=''?'${redis_password}':null}" />
<constructor-arg name="database" value="${redis_db_index}" type="int" />
</bean>
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
相關文章
玩轉spring boot 結合jQuery和AngularJs(3)
玩轉spring boot,這篇文章主要介紹了結合jQuery和AngularJs,玩轉spring boot,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01
關于ResponseEntity類和HttpEntity及跨平臺路徑問題
這篇文章主要介紹了關于ResponseEntity類和HttpEntity及跨平臺路徑問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
Spring動態(tài)配置計時器觸發(fā)時間的實例代碼
這篇文章主要介紹了Spring動態(tài)配置計時器觸發(fā)時間的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-06-06

