好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

spring中通过ApplicationContext getBean获取注入对象的方法实例

用springcontextutil实现applicationcontextaware

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

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());

  }

}

工具类

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<!-- 1 自动扫描 将标注spring注解的类自动转化bean-->

  <context:component-scan base- package = "com.first,com.util" />

  <!-- 2 加载数据资源属性文件 -->

  <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类

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<bean id= "jedispoolconfig" class = "redis.clients.jedis.jedispoolconfig" >

    <property name= "maxidle" value= "300" /> <!-- 最大能够保持idel状态的对象数 -->

    <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中通过ApplicationContext getBean获取注入对象的方法实例的详细内容...

  阅读:14次