在Spring框架中,Bean是一个由Spring IoC容器实例化、配置和管理的对象。Bean是一个被Spring框架管理并且被应用程序各个部分所使用的对象。Spring IoC容器负责Bean的创建、初始化、依赖注入以及销毁等生命周期管理。

JAVA学习课堂”系统学习相关技术,持续更新。

Spring中的Bean相关理解_前端

目录

1、Bean的配置

2.Bean的实例化


1、Bean的配置

Spring类似一个工厂,它的作用就是生产和管理容器中的Bean,Spring容器支持XML和Properties两种格式的配置文件,实际开发中通常使用XML的格式,来注册并管理Bean之间的依赖关系。

   <Bean>元素的常用属性和子元素

Spring中的Bean相关理解_实例化_02

注:

在配置文件中,一个普通的bean只需要定义id或者name和class两个属性。

<beans xmlns="http://www.springframework.org/schema/beans"  
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
       xsi:schemaLocation="http://www.springframework.org/schema/beans  
       http://www.springframework.org/schema/beans/spring-beans.xsd">  
  
    <bean id="myBean" class="com.example.MyBeanClass">  
        <!-- 注入其他Bean、设置属性值等 -->  
        <property name="someProperty" value="someValue"/>  
    </bean>  
    
      <!-- 使用id属性定义bean1,对应的实现类为com.itTest.Bean1 -->  
      <bean id="bean1" class="com.itTest.Bean1" />
      
       <!-- 使用name属性定义bean2,对应的实现类为com.itTest.Bean2 -->  
      <bean name="bean2" class="com.itTest.Bean21" />
</beans>

 

2.Bean的实例化

在程序中,要使用某个对象,就需要先实例化对象,在spring中,要使用容器中的bean,同样需要实例化bean。

实例化bean的三种方式:构造器实例化、静态工厂方式实例化、实例工厂方式。

构造器实例化:

public class Bean1 {
}

创建spring配置文件beans1.xml配置文件中定义id为bean1的bean 

 

 

<beans xmlns="http://www.springframework.org/schema/beans"  
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
       xsi:schemaLocation="http://www.springframework.org/schema/beans  
       http://www.springframework.org/schema/beans/spring-beans.xsd"
>  
      <!-- 使用id属性定义bean1,对应的实现类为com.itTest.Bean1 -->  
      <bean id="bean1" class="com.itTest.Bean1" />
</beans>

创建测试类: 

public class InstanceTest1 {
    public static void main(string [] args) {
        //定义配置w摁键路径
        string  xmlPath = "xml的路径";
        ApplicationContext applicationContext = new ClassPathXMlApplicationContext(xmlPath);
        Bean1 bean = (Bean) applicationContext.getBean("bean1");
        system.out.println(bean);
    }
}

静态工厂方式实例化:该方法要求开发者创建一个静态工厂的方式来创建bean实例,在配置中class属性指定的不在是bean实例的实现类,而是静态工厂类。

创建一个bean2类:

 

public class Bean2 {
}

 创建MyBean2Factory类,在该类中创建一个静态方法来返回bean2的实例:

 

public class MyBean2Factory {  
  //使用自己的工厂创建Bean2实例
  public static Bean2 createBean(){
    return new Bean2();
  }
}

 

创建spring配置文件 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
    <bean id="bean2" 
            class="com.instance.static_factory.MyBean2Factory" 
       factory-method="createBean" />
</beans>

创建测试类:

public class InstanceTest2 {
  public static void main(String[] args) {
    // 定义配置文件路径
    String xmlPath = 
        "com/instance/static_factory/beans2.xml";
    // ApplicationContext在加载配置文件时,对Bean进行实例化
    ApplicationContext applicationContext = 
        new ClassPathXmlApplicationContext(xmlPath);
    System.out.println(applicationContext.getBean("bean2"));
  }
}

 

 

实例工厂方式实例化:该方法采用直接创建bean实例的方式,在配置文件中需要实例化的bean也不是通过class属性直接指向的实例化类,在通过factory-bean属性指向配置的实例工厂,使用factory-mentod属性确定使用工厂中的哪个方法

创建类对象:

public class MyBean3Factory {
  public MyBean3Factory() {
    System.out.println("bean3工厂实例化中");
  }
    //创建Bean3实例的方法
  public Bean3 createBean(){
    return new Bean3();
  }
}

创建Spring配置文件bean3.xml设置相关配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
    <!-- 配置工厂 -->
    <bean id="myBean3Factory" 
            class="com.instance.factory.MyBean3Factory" />
    <!-- 使用factory-bean属性指向配置的实例工厂,
          使用factory-method属性确定使用工厂中的哪个方法-->
  <bean id="bean3" factory-bean="myBean3Factory" 
       factory-method="createBean" />
</beans>

 创建测试类:

public class InstanceTest3 {
  public static void main(String[] args) {
    // 指定配置文件路径
    String xmlPath = "com/instance/factory/beans3.xml";
    // ApplicationContext在加载配置文件时,对Bean进行实例化
    ApplicationContext applicationContext = 
        new ClassPathXmlApplicationContext(xmlPath);
    System.out.println(applicationContext.getBean("bean3"));
  }
}