Spring框架学习(一)

Spring框架

1.新建Maven项目

2.添加依赖

maven仓库

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

    <dependencies>
        <!--核心-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!--bean-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!--容器-->
        <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>

设置spring.version方便以后更新

场景一:

(1)创建SlayDragonQuest类

package net.ty.spring.lesson01;

/**
 * 功能:杀龙任务类
 * 日期:21-03-24
 */
public class SlayDragonQuest {
    public void embark() {
        System.out.println("执行杀龙任务。");
    }
}

(2)创建BraveKnight类

package net.ty.spring.lesson01;

/**
 * 功能:勇敢骑士类
 * 日期:21-03-24
 */
public class BraveKnight {

    private SlayDragonQuest slayDragonQuest;

    public void setSlayDragonQuest(SlayDragonQuest slayDragonQuest) {
        this.slayDragonQuest = slayDragonQuest;
    }

    public void embarkOnQuest() {
        slayDragonQuest.embark();
    }
}

传统方式测试:

package net.ty.spring.lesson01;

import org.junit.Test;

/**
 * 功能:传统方式测试救美骑士类
 * 时间:20-03-24
 */
public class TestDamselRescuingKnightOld {

    @Test
    public void testDaselRescuingKnight() {
        // 创建救美任务对象
        RescueDamselQuest rescueDamselQuest = new RescueDamselQuest();
        // 创建救美骑士类
        DamselRescuingKnight damselRescuingKnight = new DamselRescuingKnight(rescueDamselQuest);
        // 执行任务
        damselRescuingKnight.embarkOnQuest();
    }
}

Spring框架测试:

(1)log4j.properties

log4j.rootLogger=WARN, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

(2)新建spring-config.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:noNamespaceSchemaLocation="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="slayDragonQuest" class="net.ty.spring.lesson01.SlayDragonQuest"/>
    <bean id="Mike" class="net.ty.spring.lesson01.BraveKnight">
        <property name="slayDragonQuest" ref="slayDragonQuest"/>
    </bean>
</beans>

(3)测试

package net.ty.spring.lesson01;

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

/**
 * 功能:采用spring测试勇敢骑士类
 * 日期:21-03-24
 */
public class TestBraveKnightNew {
    private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器

    @Before
    public void init() {
        context = new ClassPathXmlApplicationContext("xmlconfig/spring-config.xml");
        System.out.println("spring应用容器已创建");
    }

    @Test
    public void testBraveKnight() {
        BraveKnight braveKnight = (BraveKnight) context.getBean("Mike");
        braveKnight.embarkOnQuest();
    }

    @After
    public void destroy() {
        context.close();
        System.out.println("spring应用容器已关闭");
    }
}

重复定义Bean

场景二:

(1)创建RescueDamselQuest类

package net.ty.spring.lesson01;

/**
 * 功能:救美任务类
 * 时间:21-03-24
 */
public class RescueDamselQuest {
    public void embark() {
        System.out.println("执行救美任务。");
    }
}

(2)创建DamselRescuingKnight类

package net.ty.spring.lesson01;

/**
 * 功能:救美骑士类
 * 时间:21-03-24
 */
public class DamselRescuingKnight {
    private RescueDamselQuest rescueDamselQuest;

    public DamselRescuingKnight(RescueDamselQuest rescueDamselQuest) {
        this.rescueDamselQuest = rescueDamselQuest;
    }

    public void embarkOnQuest() {
        rescueDamselQuest.embark();
    }
}

传统方式测试:

package net.ty.spring.lesson01;

import org.junit.Test;

/**
 * 功能:传统方式测试救美骑士类
 * 时间:20-03-24
 */
public class TestDamselRescuingKnightOld {

    @Test
    public void testDaselRescuingKnight() {
        // 创建救美任务对象
        RescueDamselQuest rescueDamselQuest = new RescueDamselQuest();
        // 创建救美骑士类
        DamselRescuingKnight damselRescuingKnight = new DamselRescuingKnight(rescueDamselQuest);
        // 执行任务
        damselRescuingKnight.embarkOnQuest();
    }
}

Spring框架测试:

修改spring-config.xml文件

测试

package net.ty.spring.lesson01;

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

/**
 * 功能:采用Spring容器测试救美骑士类
 * 时间:20-03-24
 */
public class TestDamselRescuingKnightNew {

    private ClassPathXmlApplicationContext context;

    @Before
    public void init() {
        context = new ClassPathXmlApplicationContext("xmlconfig/spring-config.xml");
        System.out.println("spring应用容器已创建");
    }

    @Test
    public void testDamselRescuingKnight() {
        // 根据名称从容器里获取救美骑士对象
        DamselRescuingKnight damselRescuingKnight = (DamselRescuingKnight) context.getBean("damselRescuingKnight");
        //执行任务
        damselRescuingKnight.embarkOnQuest();
    }

    @After
    public void destroy() {
        context.close();
        System.out.println("spring应用容器已关闭");
    }
}

拆分xml文件:

拆分

测试

package net.ty.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");
        System.out.println("spring应用容器已创建");
    }

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

        mike.embarkOnQuest();
        knight1.embarkOnQuest();
        knight2.embarkOnQuest();
        damselRescuingKnight.embarkOnQuest();
    }

    @After
    public void destroy() {
        context.close();
        System.out.println("spring应用容器已关闭");
    }
}
posted @ 2021-03-31 11:36  浮世无忧  阅读(67)  评论(0)    收藏  举报