[Spring]Day 01- Spring的配置详解

第一节:HelloSpring(无)

加粗代表重要,斜体为不重要


Spring配置详解

0.Bean元素

在这里插入图片描述

1. Spring 三种对象创建的方式

目录结构
在这里插入图片描述
此次改动为com.eilas.b_create包

applicationContext.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.xsd">

    <!-- 创建方式1 空参构造 !!重要 -->
    <bean name="user" class="com.eilas.bean.User"></bean>

    <!-- 创建方式2 静态工厂创建 调用UserFactory的createUser方法创建名为user2的对象.放入容器-->
    <bean name="user2"
          class="com.eilas.b_create.UserFactory"
          factory-method="createUser"></bean>

    <!-- 创建方式3:实例工厂创建
		 调用UserFactory对象的createUser2方法创建名为user3的对象.放入容器
	 -->
    <bean name="user3"
          factory-bean="suerFactory"
          factory-method="createUser2"></bean>
    <bean name="suerFactory"
          class="com.eilas.b_create.UserFactory"></bean>

</beans>

UserFactory

package com.eilas.b_create;

import com.eilas.bean.User;

public class UserFactory {

    public static User createUser() {
        System.out.println("静态工厂创建User");
        return new User();
    }

    public User createUser2(){

        System.out.println("实例工厂创建User");

        return new User();

    }
}

Test_Create

package com.eilas.b_create;

import com.eilas.bean.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test_Create {


    @Test
    //创建方式1:空参构造(!!)
    public void test01() {
        ApplicationContext ac = new ClassPathXmlApplicationContext("com\\eilas\\b_create\\applicationContext.xml");
        User u = (User) ac.getBean("user");
        System.out.println(u);
    }

    @Test
    //创建方式2:静态工厂
    public void test02() {
        ApplicationContext ac = new ClassPathXmlApplicationContext("com\\eilas\\b_create\\applicationContext.xml");
        User u = (User) ac.getBean("user2");
        System.out.println(u);
    }

    @Test
    //创建方式3:实例工厂
    public void test03() {
        ApplicationContext ac = new ClassPathXmlApplicationContext("com\\eilas\\b_create\\applicationContext.xml");
        User u = (User) ac.getBean("user3");
        System.out.println(u);
    }
}

测试结果
在这里插入图片描述

2. Scope

使用:在bean中定义

    <!--静态工厂创建 调用UserFactory的createUser方法创建名为user2的对象.放入容器-->
    <bean name="user2"
          class="com.eilas.b_create.UserFactory"
          factory-method="createUser" scope="singleton"></bean>

    <!-- 创建方式3:实例工厂创建
		 调用UserFactory对象的createUser2方法创建名为user3的对象.放入容器
	 -->
    <bean name="user3"
          factory-bean="suerFactory"
          factory-method="createUser2" scope="prototype"></bean>
    <bean name="suerFactory"
          class="com.eilas.b_create.UserFactory"></bean>
  • singleton(单例) 是默认的,容器是使用时创建,大多数默认
    在这里插入图片描述
  • prototype(多例) 使用时才会创建,struts2中actionBean必须使用多例
    在这里插入图片描述

3.生命周期

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在测试方法使用以下方法才能看到销毁

((ClassPathXmlApplicationContext) ac).close(); //关闭容器

4. Spring的分模块配置

    <!--在主配置xml文件导入其他spring配置文件-->
    <import resource="com/eilas/b_create/applicationContext.xml"/>

猜你喜欢

转载自blog.csdn.net/tinfengyee/article/details/88791581