欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring环境搭建及三种创建管理对象的方式

程序员文章站 2022-05-29 14:45:44
...

1、Spring环境搭建
1.1、环境搭建所需核心包

Spring环境搭建及三种创建管理对象的方式
可通过在pom.xml文件中配置导入相关包

 <!--以下四个包是Spring框架环境搭建所需包-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>4.3.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>4.3.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.3.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-expression</artifactId>
      <version>4.3.8.RELEASE</version>
    </dependency>

1.2、Spring配置文件,配置配置文件ApplicationContext.xml(此文件名称可以随意命名,但是经常使用ApplicationContext,ApplicationContext是Spring解析配置文件后使用的容器)文件;
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"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"

       xsi:schemaLocation="
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

        <!--
            Spring创建对象的三种方法:构造方法创建对象:1、无参构造方法创建对象;2、有参构造方法创建对象
            一、
            无参构造方法创建对象:
            id属性:可以获取创建对象的唯一标识
            class属性:需要创建的对象所在的位置
        -->
    <bean id="people" class="Demo01.Model.People">
    </bean>

    <!--
        有参构造方法创建对象:对象需要有 有参构造
    -->
    <bean id="people2" class="Demo01.Model.People">
        <!--constructor-arg:构造方法 参数
            属性介绍:index:参数索引;
                    name: 参数名称
                    ref :  引用其他对象作为参数
                    type: 参数类型
                    value:参数赋值
                以上属性不必须同事存在,可*组合,例如:index&value、name&value。。。

             需要注意的是在Spring中type类型要与类中类型保持一致,例如:Integer不能自动拆箱为int类型
        -->

        <constructor-arg index="0" name="id" type="int" value="10"></constructor-arg>
        <constructor-arg index="1" name="name" type="java.lang.String" value="张丹"></constructor-arg>
        <constructor-arg index="2" name="sex" type="char" value="女"></constructor-arg>
    </bean>

    <!--二、实例工厂 : 创建工厂 》》》 创建对象-->
    <bean id="factory" class="Demo01.Factory.PeopleFactory"></bean>
    <bean id="people3" factory-bean="factory" factory-method="getTarget">
    </bean>

    <!--三、静态工厂创建对象-->
    <bean id="people4" class="Demo01.Factory.PeopleFactory" factory-method="getStaticTarget"></bean>
</beans>

在此示例文件中,展示了Spring三种创建对象的方式;
新建spring配置文件是要特别注意配置文件中的头信息要正确并完整,不然在进行文件配置时会出现错误提示。

1.3、实体类
Spring环境搭建及三种创建管理对象的方式
People.java
用户Spring配置中第一种创建的对象的方式进行对象创建:

package Demo01.Model;
/**
 * 人员实体类封装
 */
public class People {
    private Integer id;
    private String name;
    private char sex;
    public People(){
        super();
        System.out.println("这是测试Spring创建对象的People无参构造方法");
    }
    public People(int id,String name,char sex){
        super();
        this.id = id;
        this.name = name;
        this.sex = sex;
        System.out.println("id:"+id+" -- name:"+name+" -- sex:"+sex);
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public char getSex() {
        return sex;
    }
    public void setSex(char sex) {
        this.sex = sex;
    }
    @Override
    public String toString() {
        return "People{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex=" + sex +
                '}';
    }
}

PeopleFactory.java
用于Spring配置文件中的实例工厂、静态工厂创建管理对象的实现

package Demo01.Factory;

import Demo01.Model.People;

public class PeopleFactory {
    /**
     * 实例工厂:需要先创建工厂,在创建对象,具体配置见Spring配置文件中
     * @return
     */
    public People getTarget(){
        return new People();
    }

    /***
     * 静态工厂:不需要创建工厂 即可获取对象
     */
    public static People getStaticTarget(){
        return new People();
    }
}

2、上述Spring框架配置文件解析及对象创建的测试方法:

import Demo01.Model.People;
import com.sun.scenario.effect.impl.prism.ps.PPSEffectPeer;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestDemo01 {
    @Test
    public void TestSpringCreatePeople(){
        //读取Spring配置文件ApplicationContext.xml将内容放到ApplicationContext容器中
        /**
         * 扩展 IDEA中查询接口的实现类的快捷方法 : ctrl + alt +B
         */
        ApplicationContext ac = new ClassPathXmlApplicationContext("ApplicationContext.xml");
        //getBean:第一个参数是Spring配置文件中所管理的对象的唯一标识;
        //第二个参数是对象返回值类型,如果第二个参数不写,则返回值类型为Object,然后可以使用强制转换来转换对象的类型
        People p = ac.getBean("people2", People.class);
        System.out.println("构造方法创建对象:"+p);

        /**
         * 实例工厂
         */
        People p3 = ac.getBean("people3",People.class);
        System.out.println("实例工厂创建对象:"+p3);

        /**
         * 静态工厂
         */
        People p4 = ac.getBean("people4", People.class);
        System.out.println("静态工厂创建对象:"+p4);

        //获取Spring配置文件中管理的所有对象标识
        String[] str = ac.getBeanDefinitionNames();
        for (String s: str
             ) {
            System.out.println(s);
        }
    }
}