Spring

  • Web开发技术思维导图
    在这里插入图片描述

二、Spring框架

(一)Spring官网

  • 网址:https://spring.io
    在这里插入图片描述
  • 创建Maven项目 - SpringDemo,设置项目位置以及组ID

 在这里插入图片描述

 单击【Finish】按钮

在这里插入图片描述

 修改项目的Maven配置

在这里插入图片描述

(二)添加Spring依赖

在Maven仓库里查找Spring框架(https://mvnrepository.com

在这里插入图片描述

查看Spring Core

 在这里插入图片描述

选择最新版本 - 5.3.20

在这里插入图片描述

 添加到pom.xml文件的<dependencies>元素里在这里插入图片描述

  • 同理添加其他依赖

  • <?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>net.huawei.spring</groupId>
        <artifactId>SpringDemo</artifactId>
        <version>1.0-SNAPSHOT</version>

        <dependencies>
            <!--Spring核心-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>5.3.20</version>
            </dependency>
            <!--Spring实体-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>5.3.20</version>
            </dependency>
            <!--Spring容器-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.3.20</version>
            </dependency>
            <!--Spring Web-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>5.3.20</version>
            </dependency>
            <!--Spring MVC-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>5.3.20</version>
            </dependency>
            <!--Spring测试-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>5.3.20</version>
            </dependency>
            <!--单元测试-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </project>
    但是大家可以看到版本号是红色的,说明这些依赖包还没有下载

  • 在这里插入图片描述

 打开Maven窗口

在这里插入图片描述

 查看本地Maven仓库

在这里插入图片描述

 可以查看项目下载的有关Spring框架的依赖

在这里插入图片描述

 (三)创建杀龙任务类

在这里插入图片描述

 (四)创建勇敢骑士类

 在这里插入图片描述

五)采用传统方式让勇敢骑士完成杀龙任务

在这里插入图片描述

 运行测试方法testBraveKnight()

在这里插入图片描述

 查看程序运行结果

在这里插入图片描述

 

(六)采用Spring框架让勇敢骑士完成杀龙任务

在这里插入图片描述

2、创建Spring配置文件 

在这里插入图片描述

输入Spring配置文件名 

在这里插入图片描述

 在这里插入图片描述

单击【Configure application context】(配置应用上下文) 

在这里插入图片描述

 单击【Create new application context…】(创建新的应用上下文),注意应用上下文名称是可以修改的

在这里插入图片描述

单击【OK】按钮 

在这里插入图片描述

 在项目结构窗口里查看配置好的spring-config.xml

在这里插入图片描述

3、在Spring配置文件里创建Bean

(1)创建杀龙任务Bean

<!--杀龙任务Bean--> <bean id="slayDragonQuest" class="net.huawei.spring.day01.SlayDragonQuest"/>

(2)创建勇敢骑士Bean

<!--创建勇敢骑士Bean-->                                                 
<bean id="RobinHood" class="net.huawei.spring.day01.BraveKnight"> 
    <property name="name" value="罗宾汉"/>  <!-- RobinHood.setName("罗宾汉")-->                        
    <property name="slayDragonQuest" ref="slayDragonQuest"/>  <!--RobinHood.setSlayDragonQuest(slayDragonQuest)-->  
</bean> 

property元素:给对象设置属性值
name属性:Bean对象的属性名
ref属性:Bean对象的属性值(引用另一个Bean对象)
勇敢骑士Bean通过<property>元素将杀龙任务Bean注入作为其属性。注意,name属性值一定是BraveKnight类的属性名,ref属性值是已定义的杀龙任务Bean的id值

<?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.huawei.spring.day01.SlayDragonQuest"/>
    <!--创建勇敢骑士Bean-->
    <bean id="RobinHood" class="net.huawei.spring.day01.BraveKnight">
        <property name="name" value="罗宾汉"/>  <!-- RobinHood.setName("罗宾汉")-->
        <property name="slayDragonQuest" ref="slayDragonQuest"/> <!--RobinHood.setSlayDragonQuest(slayDragonQuest)-->
    </bean>
</beans>
通过Spring配置文件,创建了两个Bean对象,它们之间存在依赖关系,第一个Bean对象是第二个Bean对象的任务属性值。

在这里插入图片描述

4、创建新勇敢骑士测试类 

test/java/net.huawei.spring.day01里创建TestBraveKnightNew测试类

在这里插入图片描述

采用基于类路径的应用容器类 - ClassPathXmlApplicationContext

在这里插入图片描述

在这里插入图片描述

 

package net.huawei.spring.day01;

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

/**
 * 功能:测试勇敢骑士类
 * 作者:华卫
 * 日期:2022年05月29日
 */
public class TestBraveKnightNew {
    private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器
    
    @Before // 每次测试方法执行前都要执行的代码
    public void init() {
        // 基于Spring配置文件创建应用容器
        context = new ClassPathXmlApplicationContext("xmlconfig/spring-config.xml");
        // 提示用户
        System.out.println("Spring应用容器已创建~");
    }
    
    @Test 
    public void testBraveKnight() {
        // 根据名称从应用容器中获取勇敢骑士对象(配置文件里定义勇敢骑士Bean的id是"RobinHood")
        BraveKnight braveKnight = (BraveKnight) context.getBean("RobinHood");
        // 勇敢骑士执行任务
        braveKnight.embarkOnQuest();
    }
    
    @After // 每次测试方法执行后都要执行的代码
    public void destroy() {
        // 关闭应用容器
        context.close();
        // 提示用户
        System.out.println("Spring应用容器已关闭~");
    }
}

  • 代码说明:首先通过Spring配置文件创建Spring应用容器,然后就可以利用容器的getBean方法通过名称获取容器里的Bean对象,然后调用该对象的方法。

  • 运行测试方法testBraveKnight(),查看结果

  • 在这里插入图片描述

     根据名称从应用容器中获取勇敢骑士对象可能会报错,因为配置文件里没有定义那个名称的Bean在这里插入图片描述

     当然可以对上述代码进行异常处理。

    在这里插入图片描述

     

     在这里插入图片描述

     5、创建两个勇敢骑士Bean

  • 基于一个类可以创建多个对象,因此,在spring-config.xml文件里,也可以基于同一个类创建多个Bean。

  • 基于BraveKnight类再创建两个Beanid值分别为knight1knight2

  • 在这里插入图片描述

  • 在Spring配置文件里,同一个Bean不能重复定义,也就是说不允许两个Bean有相同的id

  •  

    6、修改新勇敢骑士测试类

  • 获取新建的两个勇敢骑士Bean,调用执行任务方法
  • 在这里插入图片描述

执行testBraveKnight()测试方法,查看结果 

在这里插入图片描述

初始化对象其实可以调用有参构造方法来设置属性的初始值,对应到Spring的Bean工厂,就还有一种注入方式,叫做构造方法注入。同样地,我们还是通过案例来演示如何通过构造方法来注入属性值 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值