一、Spring配置文件管理Bean

一、正文

1、创建Maven项目

在这里插入图片描述

2、pom.xml 进行配置

<properties>
    <!-- spring.version -->
    <spring.version>5.3.4</spring.version>
</properties>

<dependencies>
    <!--Spring核心-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <!--Spring Bean-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <!--Spring容器-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <!--Spring测试-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <!--单元测试-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
        <scope>test</scope>
    </dependency>
</dependencies>

可能会有点报错,首先修改MyBatis第一步中的三大步
其次,在这里插入图片描述

场景1:骑士完成杀龙任务

(1)创建杀龙任务类-SlayDragonQuest

在这里插入图片描述

(2)创建杀龙骑士类-BraveKnight

在这里插入图片描述

3、采用传统方式让骑士完成杀龙任务

  • 传统方式:
    1、创建测试类
    2、创建任务对象
    3、骑士对象
    4、设置骑士去完成任务
    5、骑士执行任务
    在这里插入图片描述

4、采用Spring框架让骑士完成杀龙任务

- 创建log4j.properties

在这里插入图片描述

- 创建Spring配置文件spring-config.xml

有些没有XML创建模板,需要自定义

在这里插入图片描述在这里插入图片描述

- 在Spring配置文件里创建Bean

Spring容器就是管理Bean的工厂,在< beans>元素里配置Bean

  • 配置文件与骑士类的关系:
    在这里插入图片描述
  • 测试类
    在这里插入图片描述
  • 运行结果:
    在这里插入图片描述

场景2:骑士完成救美任务

1、采用构造函数注入方式给Bean注入属性

(1)救美骑士类 - DamselRescuingKnight

在这里插入图片描述

(2)救美任务类- RescueDamselQuest

在这里插入图片描述

(3)在Spring配置文件里创建救美骑士Bean

在这里插入图片描述

(4)测试救美骑士类

在这里插入图片描述

三、思考题

(1)拆分Spring配置文件
多个spring-config.xml情况,分解Bean工厂

在这里插入图片描述

  • Spring-config01.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">


    <!--创建杀龙任务Bean-->
    <bean id="slayDragonQuest" class="net.zy.spring.lesson01.SlayDragonQuest"/>

    <!--创建骑士Bean-->
    <bean id="Mike" class="net.zy.spring.lesson01.BraveKnight">
        <property name="slayDragonQuest" ref="slayDragonQuest"/>
        <!--        property元素:给对象设置属性值-->
        <!--指勇敢骑士类的属性   name属性:Bean对象的属性名-->
        <!--指第11行         ref属性:Bean对象的属性值(引用另一个Bean对象)-->
    </bean>

    <bean id="Amy" class="net.zy.spring.lesson01.BraveKnight">
        <property name="slayDragonQuest" ref="slayDragonQuest"/>
    </bean>


</beans>
  • Spring-config02.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">

    <!--    案例:采用构造函数注入方式给Bean注入属性-->
    <bean id="rescueDamselQuest" class="net.zy.spring.lesson01.RescueDamselQuest"/>
    <bean id="damselRescuingKnight" class="net.zy.spring.lesson01.DamselRescuingKnight">
        <constructor-arg ref="rescueDamselQuest"/>
    </bean>


</beans>

(2)测试类 -TestKnight.java

package net.zy.spring.lesson01;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestKnight {
    private ClassPathXmlApplicationContext context;
    @Before
    public void init(){
        context = new ClassPathXmlApplicationContext("xmlconfig/spring-config*.xml");

    }

    @Test
    public void testKnight(){
        BraveKnight mike = (BraveKnight)context.getBean("Mike");
        BraveKnight amy = (BraveKnight)context.getBean("Amy");
        DamselRescuingKnight damselRescuingKnight = (DamselRescuingKnight)context.getBean("damselRescuingKnight");

        mike.embarkOnQuest();
        amy.embarkOnQuest();
        damselRescuingKnight.embarkOnQuest();
    }

    @After
    public void destroy(){
        context.close();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值