springbean:自然的访问spring容器中的bean

     Spring依赖其IOC特征轻松管理着堆非常有价值bean,这些bean在spring容器中依赖关系都已注入好所以相互非常方便   但既然是有价值bean我们就想在Java代码各处都能实际中确有这样场景比如:

  Strutsaction要用其中service;

  充血领域模型Hibernate实体会需要dao

  要这些bean现在也确实有很多做法:

  以下代码描述方式被称为bad smell是最不自然方式不被提倡;

  JDBCDao jdbcDao = (JdbcDao)springContext.getBean("jdbcDao");

  自然方式是bean也是注入:

  struts2是通过个spring plugin来做到;

  hibernate就没那么简单了要用到annotation声明要什么ASPectJ织入概念复杂麻烦的极;

  我有个简单做法至少对单件bean很可行(般我们需要bean也就是单件)思路很简单依靠spring注入机制把容器内bean注入为静态变量而静态变量天然就是各处可用以下是代码:

  Java:


    public  JdbcDao {
  
  //静态变量
  private  JdbcDao   instance;
  //静态思路方法获取单件对象
  public  JdbcDao get{
   instance;
  }
  //对象思路方法注入到静态变量
  public void Instance(JdbcDao _inst){
  instance = _inst;
  }
  public List query(String sql){
  ....
  }
  
  }



  spring配置,将自身注入:

      <bean id="jdbcDao" ="net.jacker.dao.JdbcDao">

        <property name="instance">
            <ref bean="jdbcDao" />
        </property>

    </bean>




  这样只要spring容器启动构造好bean后就会自行将其注入到静态变量然后在各处就很简单了:


   public  UserAction {
  JdbcDao jdbcDao = JdbcDao.get;
  public String execute{
  jdbcDao.query;
  }
  ...
  }



  注:网上有些思路也是从静态变量入手但做法有所区别需要依赖Web容器就不多做介绍了

  最后要说就是这也是单件模式种实现使用spring容器配置注入好你单件对象并在任何地方使用的

Tags:  springbeanparent springbeanscope springbean作用域 springbean

延伸阅读

最新评论

发表评论