文章目录

  • 一、Spring
  • 1.1、Slay Dragon
  • 1.2、RescueDamselQuest
  • 1.3、使用接口来运行程序


一、Spring

第一周写了两个小项目均使用了原始调用容器的方法

两个项目:<斩杀大龙与上路保卫战> 配一张文件位置图

外企java开发 java企业开发_外企java开发

1.1、Slay Dragon

BraveKnight

package net.sherry.spring.day01;

public class BraveKnight {
    private String name; //骑士姓名
    private SlayDragonQuest slayDragonQuest; //杀龙任务


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setSlayDragonQuest(SlayDragonQuest slayDragonQuest) {
        this.slayDragonQuest = slayDragonQuest;
    }
    public void embarkOnQuest(){
        System.out.print("召唤师["+ name + "]");// 勇士流明
        slayDragonQuest.embark();// 执行任务
    }
}

Slay Dragon Quest

package net.sherry.spring.day01;

public class SlayDragonQuest {
    public void embark(){
        System.out.println("Red team has slay the dragon");
    }
}

下面是调用方法

spring-config.xml
这个是下面两个方法所用的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.sherry.spring.day01.SlayDragonQuest"/>
    <bean id="braveKnight" class="net.sherry.spring.day01.BraveKnight">
        <property name="name" value="姜承録"/>
        <property name="slayDragonQuest" ref="slayDragonQuest"/>
    </bean>
    <bean id="knight1" class="net.sherry.spring.day01.BraveKnight">
        <property name="name" value="Rookie"/>
        <property name="slayDragonQuest" ref="slayDragonQuest"/>
    </bean>
    <bean id="knight2" class="net.sherry.spring.day01.BraveKnight">
        <property name="name" value="JackeyLove"/>
        <property name="slayDragonQuest" ref="slayDragonQuest"/>
    </bean>

    <!--配置营救任务Bean-->
    <bean id="rescueDamselQuest" class="net.sherry.spring.day01.RescueDamselQuest"/>
    <!--配置营救Bean-->
    <bean id="rescueDamselKnight" class="net.sherry.spring.day01.RescuedamselKnight">
        <constructor-arg value="Ning" />
        <constructor-arg ref="rescueDamselQuest" />
    </bean>
</beans>

TestBraveKnightOld
这个是原始方法

package net.sherry.spring.day01;

import org.junit.Test;

public class TestBraveKnightOLd {
    @Test
    public void testBraveKnight(){
        // 创建一个斩杀对象
        SlayDragonQuest slayDragonQuest = new SlayDragonQuest();
        // 创建勇敢骑士对象
        BraveKnight braveKnight = new BraveKnight();
        //设置勇敢骑士属性
        braveKnight.setName("姜承録");
        braveKnight.setSlayDragonQuest(slayDragonQuest);
        //调用勇敢骑士执行任务方法
        braveKnight.embarkOnQuest();
    }
}

TestKnightNew
使用容器的方法

package net.sherry.spring.day01;

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

/**
 * 功能:采用Spring容器测试勇敢骑士类
 * 作者:Sherry
 * 日期:2023年02月13日
 */
public class TestKnightNew {
    private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器(Bean工厂)

    @Before // 每次测试方法执行前都要执行的代码就放在此方法里
    public void init() {
        // 基于Spring配置文件创建应用容器
        context = new ClassPathXmlApplicationContext("xmlconfig/spring-config.xml");
        // 提示用户
        System.out.println("Spring应用容器已创建~");
    }

    @Test
    public void testBraveKnight() {
        try {
            // 根据名称从应用容器中获取勇敢骑士对象
            BraveKnight braveKnight = (BraveKnight) context.getBean("braveKnight");//BraveKnight
            // 勇敢骑士执行任务
            braveKnight.embarkOnQuest();
            BraveKnight knight1 = (BraveKnight) context.getBean("knight1");//BraveKnight
            // 勇敢骑士执行任务
            knight1.embarkOnQuest();
            BraveKnight knight2 = (BraveKnight) context.getBean("knight2");//BraveKnight
            // 勇敢骑士执行任务
            knight2.embarkOnQuest();
        }catch (Exception e){
            System.out.println("查无此人");
        }

    }

    @After // 每次测试方法执行后都要执行的代码就放在此方法里
    public void destroy() {
        // 关闭应用容器
        context.close();
        // 提示用户
        System.out.println("Spring应用容器已关闭~");
    }
}

1.2、RescueDamselQuest

上路保卫战
RescueDamselKnight

package net.sherry.spring.day01;

/**
 * 功能:
 * 作者:Sherry
 * 日期:2023/2/15
 */
public class RescuedamselKnight {
    private String name; //英雄名
    private RescueDamselQuest rescueDamselQuest; // 救援任务

    /**
     * 有参构造方法
     *
     * @param name
     * @param rescueDamselQuest
     */

    public RescuedamselKnight(String name, RescueDamselQuest rescueDamselQuest){
        this.name = name;
        this.rescueDamselQuest = rescueDamselQuest;
    }

    public void embarkOnQuest(){
        System.out.print("上路保卫者["+ name +"]" );
        rescueDamselQuest.embark();
    }
}

RescueDamselQuest

package net.sherry.spring.day01;

/**
 * 功能:
 * 作者:Sherry
 * 日期:2023/2/15
 */
public class RescueDamselQuest {
    public void embark(){
        System.out.println("执行营救任务……");
    }
}

TestRescueDamselKnightOld

package net.sherry.spring.day01;

import org.junit.Test;

/**
 * 功能:
 * 作者:Sherry
 * 日期:2023/2/15
 */
public class TestRescueDamselKnightOld {
    @Test
    public void testRescuedamselKnight(){
        // 创建营救任务
        RescueDamselQuest rescueDamselQuest = new RescueDamselQuest();
        // 创建英雄对象
        RescuedamselKnight rescuedamselKnight = new RescuedamselKnight("Ning", rescueDamselQuest);
        // 执行任务
        rescuedamselKnight.embarkOnQuest();
    }
}

TestRescueDamselKnightNew

package net.sherry.spring.day01;

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

/**
 * 功能:采用Spring容器测试营救任务
 * 作者:Sherry
 * 日期:2023/2/15
 */
public class TestRescueDamselKnightNew {
    private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器(Bean工厂)

    @Before // 每次测试方法执行前都要执行的代码就放在此方法里
    public void init() {
        // 基于Spring配置文件创建应用容器
        context = new ClassPathXmlApplicationContext("xmlconfig/spring-config.xml");
        // 提示用户
        System.out.println("Spring应用容器已创建~");
    }

    @Test
    public void testRescueDamselKnight() {
        RescuedamselKnight rescuedamselKnight = (RescuedamselKnight) context.getBean("rescueDamselKnight");
        rescuedamselKnight.embarkOnQuest();
    }

    @After // 每次测试方法执行后都要执行的代码就放在此方法里
    public void destroy() {
        // 关闭应用容器
        context.close();
        // 提示用户
        System.out.println("Spring应用容器已关闭~");
    }
}

1.3、使用接口来运行程序

BraveKnight

package net.sherry.spring.day02;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component("姜承錄")
public class BraveKnight implements Knight{
    @Value("Ning")//值注解符
    private String name; //骑士姓名
    @Autowired //自动装配注解符
    private SlayDragonQuest slayDragonQuest; //杀龙任务

    @Override
    public void embarkOnQuest(){
        System.out.print("召唤师["+ name + "]");// 勇士流明
        slayDragonQuest.embark();// 执行任务
    }
}

RescuedamselKnight

package net.sherry.spring.day02;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * 功能:
 * 作者:Sherry
 * 日期:2023/2/15
 */
@Component
public class RescuedamselKnight implements Knight{
    @Value("姜承録")
    private String name; //英雄名
    @Autowired
    private RescueDamselQuest rescueDamselQuest; // 救援任务

    @Override
    public void embarkOnQuest(){
        System.out.print("上路保卫者["+ name +"]" );
        rescueDamselQuest.embark();
    }
}

SlayDragonQuest

package net.sherry.spring.day02;
import org.springframework.stereotype.Component;

@Component
public class SlayDragonQuest  implements Quest{
    @Override
    public void embark(){
        System.out.println("Red team has slay the dragon");
    }
}

RescuDamelsQuest

package net.sherry.spring.day02;
import org.springframework.stereotype.Component;

/**
 * 功能:
 * 作者:Sherry
 * 日期:2023/2/15
 */
@Component
public class RescueDamselQuest implements Quest{
    @Override
    public void embark(){
        System.out.println("执行营救任务……");
    }
}

然后是两个接口类:
Quest

package net.sherry.spring.day02;

/*
*  功能:任务接口
*  作者:Sherry
*  日期:2023年02月21日
*/
public interface Quest {
    void embark();
}

Knight

package net.sherry.spring.day02;

public interface Knight {
    void embarkOnQuest();
}

测试类:
TestKnight

package net.sherry.spring.day02;

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

/**
 * 功能:测试骑士类
 * 作者:Sherry
 * 日期:2023/2/21
 */
public class TestKnight {
    private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器(Bean工厂)

    @Before // 每次测试方法执行前都要执行的代码就放在此方法里
    public void init() {
        // 基于Spring配置文件创建应用容器
        context = new ClassPathXmlApplicationContext("xml_annotation/spring-config.xml");
    }
    @Test
    public void testKnight(){
        // 根据名称从应用容器里获取勇敢骑士对象
        Knight knight1 = (BraveKnight) context.getBean("姜承錄");
        // 勇敢骑士执行任务
        knight1.embarkOnQuest();
        // 根据名称从应用容器里获取勇敢骑士对象
        Knight knight2 = (RescuedamselKnight) context.getBean("rescuedamselKnight");
        // 勇敢骑士执行任务
        knight2.embarkOnQuest();

    }

    @After // 每次测试方法执行后都要执行的代码就放在此方法里
    public void destroy() {
        // 关闭应用容器
        context.close();
    }
}

测试结果:

外企java开发 java企业开发_学习_02


每个人执行两个任务

外企java开发 java企业开发_System_03

外企java开发 java企业开发_学习_04