Spring源码的了解(二) Spring的xml的方法实现控制反转

版权声明:转载的话 请标明出处 https://blog.csdn.net/qq_28198181/article/details/88313129

学习地址:https://www.bilibili.com/video/av35914008/(别问 问就是蹭流量)(https://www.majiaxueyuan.com/front/showcoulist

举个简单的例子

使用xml配置文件去创建一个user对象

目录

1.创建Spring工程

2.添加配置文件

3.创建user属性

4.运行


1.创建Spring工程

1.idea创建maven工程

添加依赖文件(用的SpringBoot的插件):

扫描二维码关注公众号,回复: 6228672 查看本文章
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.3.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>net.sourceforge.nekohtml</groupId>
            <artifactId>nekohtml</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

2.添加配置文件

创建一个resources文件夹

然后点击project Structure,选择resources点击上面的Resources按钮,之后点击确定(选择那个是为了读取以后放置的配置文件)

在resources文件夹下创建一个beans.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">

</beans>

然后配置一下

也可以通过SpirngConfigure创建

3.创建user属性

创建一个user类

public class User {
    
    private String userName;
    
    private String gender;
    
    private Integer age;

    public User() {
    }

    @Override
    public String toString() {
        return "User{" +
                "userName='" + userName + '\'' +
                ", gender='" + gender + '\'' +
                ", age=" + age +
                '}';
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

配置beans.xml文件,添加一个bean

 <bean id="user" class="com.zqj.entity.User">

        <property name="userName" value="郭二狗"></property>
        <property name="gender" value="男"></property>
        <property name="age" value="22"></property>

    </bean>

4.运行

创建一个test运行类。看咱能不能加载一个user对象

public class EntityTest {

    public static void main(String[] args) {
        //加载beans.xml文件
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("beans.xml");

        //获取到user对象
        User user = (User)classPathXmlApplicationContext.getBean("user");

        System.out.println(user);
    }

}

运行,可以看到。能够取到数据

在前面可以看到一个有加载到beans.xml文件

以及看到创建的user对象是一个单例模式

最后来看结果:

显示的和beans.xml文件配置的是一致的。

如果需要实现多个对象而不是单例对象,可以在配置文件中多写一个属性scope

<bean id="user" class="com.zqj.entity.User" scope="prototype"> <!-- scope="prototype"  -->

        <property name="userName" value="郭二狗"></property>
        <property name="gender" value="男"></property>
        <property name="age" value="22"></property>

    </bean>

附表(作用域):

 
作用域 定义

singleton

在每个spring容器中,一个Bean定义只有一个对象的实例(默认)

prototype

允许Bean定义可以被实力化任意次

request

在一次HTTP请求中,每个bean定义对应一个实例。该作用域仅在基于Web的
spring上下文(Spring MVC)中才有效

session

在一个HTTP Session 中,每一个Bean定义对应一个实例。该作用域仅在
基于Web的spring上下文(Spring MVC)中才有效

global-session

在一个全局HTTP Session中,每个Bean定义对应的一个实例,该作用
域仅在Portlet上下文中才有

猜你喜欢

转载自blog.csdn.net/qq_28198181/article/details/88313129