Spring配置文件详解(1)

Bean标签基本配置

作用:
用于配置对象交由Spring来创建。
默认情况下它调用的是类中的无参构造函数,如果没有无参构造则无法创建成功。
基本属性:
id:Bean实例在Spring容器中的唯一标识
class:Bean的全限定名称

Bean标签范围配置

scope:指对象的作用范围,取值如下:
在这里插入图片描述
前面两个标红的很熟了,后面三个是要部署在web环境中的。它们仨差不多,意思是Spring除了创建一个Bean对象放进容器的同时呢,还会将该对象放入request域啊、session域啊等等。

代码实操

注意使用单元测试时,要先在pom.xml中引入单元测试junit包的依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<!--项目坐标-->
<groupId>com.Why</groupId>
<artifactId>Spring-learning</artifactId>
<version>1.0-SNAPSHOT</version>

<!--Spring的上下文jar包依赖
Spring通过应用上下文(Application Context)装载bean的定义并把它们组装起来。
Spring应用上下文全权负责对象的创建和组装。
这也就对应了前一标题提到的开发流程中Spring的操作实现
-->
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.1</version>
    </dependency>
    <!--单元测试-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
    </dependency>
</dependencies>

</project>

然后我们先测试scope=“singleton”

<?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">


<!--id叫什么名儿都行,然后后面的class跟上全类名-->
<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl" scope="singleton">

</bean>

</beans>

测试代码为:

package com.itheima;

import com.itheima.dao.UserDao;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class springtest {

    @Test
    //测试scope="singleton"
    public void test1(){
        //寻找Spring的配置文件
        ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        //id就是这里的Spring容器要创建的哪个bean对象的标识
        UserDao userDao1 = (UserDao) app.getBean("userDao");
        UserDao userDao2 = (UserDao) app.getBean("userDao");
        System.out.println(userDao1);
        System.out.println(userDao2);
    }
}

输出为:
在这里插入图片描述
再测试prototype

<?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">


<!--id叫什么名儿都行,然后后面的class跟上全类名-->
<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl" scope="prototype">

</bean>

</beans>
package com.itheima;

import com.itheima.dao.UserDao;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class springtest {

    @Test
    //测试scope="prototype"
    public void test1(){
        //寻找Spring的配置文件
        ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        //id就是这里的Spring容器要创建的哪个bean对象的标识
        UserDao userDao1 = (UserDao) app.getBean("userDao");
        UserDao userDao2 = (UserDao) app.getBean("userDao");
        System.out.println(userDao1);
        System.out.println(userDao2);
    }
}

输出结果为:
在这里插入图片描述
scope值不同时,所产生的差别:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在地球迷路的怪兽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值