Usage example of project bean in spring actual combat container

This article describes the usage of project bean in spring container. Share with you for your reference, as follows:

One configuration

<?xml version="1.0" encoding="GBK"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://www.springframework.org/schema/beans"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
   <!-- 下面配置相当于如下代码:
   factorybean factory = new org.crazyit.app.factory.GetFieldfactorybean();
   factory.setTargetClass("java.awt.BorderLayout");
   factory.setTargetField("NORTH");
   north = factory.getObject(); -->
   <bean id="north" class="org.crazyit.app.factory.GetFieldfactorybean">
      <property name="targetClass" value="java.awt.BorderLayout"/>
      <property name="targetField" value="NORTH"/>
   </bean>
   <!-- 下面配置相当于如下代码:
   factorybean factory = new org.crazyit.app.factory.GetFieldfactorybean();
   factory.setTargetClass("java.sql.ResultSet");
   factory.setTargetField("TYPE_SCROLL_SENSITIVE");
   north = factory.getObject(); -->
   <bean id="theValue" class="org.crazyit.app.factory.GetFieldfactorybean">
      <property name="targetClass" value="java.sql.ResultSet"/>
      <property name="targetField" value="TYPE_SCROLL_SENSITIVE"/>
   </bean>
</beans>

II. Bean factory

package org.crazyit.app.factory;
import java.lang.reflect.*;
import org.springframework.beans.factory.factorybean;
public class GetFieldfactorybean implements factorybean<Object>
{
  private String targetClass;
  private String targetField;
  // targetClass的setter方法
  public void setTargetClass(String targetClass)
  {
    this.targetClass = targetClass;
  }
  // targetField的setter方法
  public void setTargetField(String targetField)
  {
    this.targetField = targetField;
  }
  // 返回工厂Bean所生产的产品
  public Object getObject() throws Exception
  {
    Class<?> clazz = Class.forName(targetClass);
    Field field = clazz.getField(targetField);
    return field.get(null);
  }
  // 获取工厂Bean所生产的产品的类型
  public Class<? extends Object> getObjectType()
  {
    return Object.class;
  }
  // 返回该工厂Bean所生成的产品是否为单例
  public boolean isSingleton()
  {
    return false;
  }
}

Three test categories

package lee;
import org.springframework.context.*;
import org.springframework.context.support.*;
public class SpringTest
{
  public static void main(String[] args)throws Exception
  {
    ApplicationContext ctx = new
      ClassPathXmlApplicationContext("beans.xml");
    // 下面2行代码获取的factorybean的产品
    System.out.println(ctx.getBean("north"));
    System.out.println(ctx.getBean("theValue"));
    // 下面代码可获取的factorybean本身
    System.out.println(ctx.getBean("&theValue"));
  }
}

IV. test results

V. description

java. awt. Borderlayout is defined as follows

public class BorderLayout implements LayoutManager2,java.io.Serializable {
  /**
   * The north layout constraint (top of container).
   */
  public static final String NORTH = "North";
}

java. sql. The resultset is defined as follows

public interface ResultSet extends Wrapper,AutoCloseable {
  int TYPE_SCROLL_SENSITIVE = 1005;
}

Readers interested in more Java related content can view the topics on this site: introduction and advanced tutorial of spring framework, tutorial of Java data structure and algorithm, summary of Java DOM node operation skills, summary of java file and directory operation skills, and summary of Java cache operation skills

I hope this article will be helpful to you in Java programming.

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>