Java企业级信息系统开发学习笔记(1)初探Spring与骑士傻龙实例

news2024/10/2 6:43:17

该文章主要为完成实训任务,详细实现过程及结果见【http://t.csdn.cn/iK3aM】

文章目录

  • 1. 创建Maven项目
  • 2. 添加Spring依赖
  • 3. 创建杀龙任务
  • 4. 创建勇士类
  • 5. 采用传统的方式
  • 6. 采用Spring容器让勇敢骑士完成杀龙任务
    • 6.1 创建日志属性文件
    • 6.2 创建Spring配置文件
    • 6.3 在Spring配置文件里创建Bean
    • 6.4 创建新勇敢骑士测试类
    • 6.5 创建两个勇敢骑士Bean
    • 6.6 修改新勇敢骑士测试类
  • 7. 采用构造方法注入方式注入属性值
    • 7.1 创建救美任务类
    • 7.2 创建救美骑士类
    • 7.3 配置救美骑士Bean
    • 7.4 创建旧救美骑士测试类
    • 7.5 创建新救美骑士测试类


1. 创建Maven项目

  • 创建Maven项目 - SpringDemo
    在这里插入图片描述
  • 修改项目的Maven配置
    在这里插入图片描述

2. 添加Spring依赖

  • 在Maven仓库里查找Spring框架(https://mvnrepository.com)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 添加到pom.xml文件的<dependencies>元素里,并添加其他依赖
<dependencies>
        <!--Spring核心-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.3.25</version>
        </dependency>
        <!--Spring实体-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.3.25</version>
        </dependency>
        <!--Spring容器-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.25</version>
        </dependency>
        <!--Spring Web-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.3.25</version>
        </dependency>
        <!--Spring MVC-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.25</version>
        </dependency>
        <!--Spring测试-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.3.25</version>
        </dependency>
        <!--单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
  • 打开maven窗口检查是否下载完成
    在这里插入图片描述

3. 创建杀龙任务

在这里插入图片描述

package cn.kox.spring.week01;

public class SlayDragonQuest {
    public void embark() {
        System.out.println("执行傻龙任务...");
    }
}

4. 创建勇士类

在这里插入图片描述

package cn.kox.spring.week01;

public class BraveKnight {
    private String name;
    private SlayDragonQuest slayDragonQuest;

    public BraveKnight(String 小明) {
    }

    public BraveKnight(String name, SlayDragonQuest slayDragonQuest) {
        this.name = name;
        this.slayDragonQuest = slayDragonQuest;
    }

    public String getName() {
        return name;
    }

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

    public SlayDragonQuest getSlayDragonQuest() {
        return slayDragonQuest;
    }

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

    public void embarkOnQuest() {
        System.out.printf("勇士骑士[%s]", name);
        slayDragonQuest.embark();
    }
}

5. 采用传统的方式

  • 创建TestBraveKnightOld
    在这里插入图片描述
package cn.kox.spring.week01;

import org.junit.Test;

public class TestBraveKnightOld {
    @Test
    public void testBraveKnightOld() {
        SlayDragonQuest sdq1 = new SlayDragonQuest();
        BraveKnight bk1 = new BraveKnight("小明", sdq1);
        bk1.embarkOnQuest();
    }
}

  • 运行程序,查看结果
    在这里插入图片描述

6. 采用Spring容器让勇敢骑士完成杀龙任务

6.1 创建日志属性文件

在这里插入图片描述

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

6.2 创建Spring配置文件

在这里插入图片描述

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

6.3 在Spring配置文件里创建Bean

(1)创建杀龙任务Bean

    <bean id="slayDragonQuest" class="cn.kox.spring.week01.SlayDragonQuest"/>

(2)创建勇敢骑士Bean

    <bean id="braveKnight" class="cn.kox.spring.week01.BraveKnight">
        <constructor-arg value=""/>
        <property name="name" value="罗斌含"/>
        <property name="slayDragonQuest" ref="slayDragonQuest"/>
    </bean>

6.4 创建新勇敢骑士测试类

  • 创建TestBraveKnightNew测试类
    在这里插入图片描述
package cn.kox.spring.week01;

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

public class TestBraveKnightNew {
    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() {
        // 根据名称从应用容器中获取勇敢骑士对象
        BraveKnight braveKnight = (BraveKnight) context.getBean("braveKnight");
        // 勇敢骑士执行任务
        braveKnight.embarkOnQuest();
    }

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

  • 运行结果
    在这里插入图片描述

6.5 创建两个勇敢骑士Bean

在这里插入图片描述

    <bean id="knight1" class="cn.kox.spring.week01.BraveKnight">
        <constructor-arg value=""/>
        <property name="name" value="高问"/>
        <property name="slayDragonQuest" ref="slayDragonQuest"/>
    </bean>

    <bean id="knight2" class="cn.kox.spring.week01.BraveKnight">
        <constructor-arg value=""/>
        <property name="name" value="加雷斯"/>
        <property name="slayDragonQuest" ref="slayDragonQuest"/>
    </bean>

6.6 修改新勇敢骑士测试类

在这里插入图片描述

        BraveKnight knight1 = (BraveKnight) context.getBean("knight1");
        knight1.embarkOnQuest();

        BraveKnight knight2 = (BraveKnight) context.getBean("knight2");
        knight2.embarkOnQuest();
  • 运行结果
    在这里插入图片描述

7. 采用构造方法注入方式注入属性值

7.1 创建救美任务类

  • 创建RescueDamselQuest
package cn.kox.spring.week01;

public class RescueDamselQuest {
    public void embark() {
        System.out.println("执行就美任务...");
    }
}

7.2 创建救美骑士类

  • 创建DamselRescuingKnight
package cn.kox.spring.week01;

public class DamselRescuingKnight {
    private String name;
    private RescueDamselQuest rescueDamselQuest;

    public DamselRescuingKnight() {
    }

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

    public String getName() {
        return name;
    }

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

    public RescueDamselQuest getRescueDamselQuest() {
        return rescueDamselQuest;
    }

    public void setRescueDamselQuest(RescueDamselQuest rescueDamselQuest) {
        this.rescueDamselQuest = rescueDamselQuest;
    }

    public void embarkOnQuest() {
        System.out.printf("救美骑士[%s]", name);
        rescueDamselQuest.embark();
    }
}

7.3 配置救美骑士Bean

  • 在Spring配置文件里创建救美骑士Bean
    在这里插入图片描述
    <!--配置救美任务Bean-->
    <bean id="rescueDamselQuest" class="cn.kox.spring.week01.RescueDamselQuest"/>

    <!--配置救美骑士Bean-->
    <bean id="damselRescuingKnight" class="cn.kox.spring.week01.BraveKnight">
        <constructor-arg value="格拉海德"/>
        <constructor-arg ref="rescueDamselQuest"/>
    </bean>

7.4 创建旧救美骑士测试类

  • 创建TestRescueDamselKnightOld
    在这里插入图片描述
package cn.kox.spring.week01;

import org.junit.Test;

public class TestRescueDamselKnightOld {
    @Test
    public void testRescueDamselKnight() {
        // 创建救美任务对象
        RescueDamselQuest rescueDamselQuest = new RescueDamselQuest();
        // 创建救美骑士对象
        RescueDamselKnight rescueDamselKnight = new RescueDamselKnight("格拉海德", rescueDamselQuest);
        // 救美骑士执行任务
        rescueDamselKnight.embarkOnQuest();
    }
}
  • 运行结果:
    在这里插入图片描述

7.5 创建新救美骑士测试类

  • 创建TestRescueDamselKnightNew
    在这里插入图片描述
package cn.kox.spring.week01;

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

public class TestRescueDamselKnightNew {
    private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器

    @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("damselRescuingKnight");
        // 救美骑士执行任务
        rescueDamselKnight.embarkOnQuest();
    }

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

  • 运行结果
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/348084.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CobaltStrike上线微信通知

CobaltStrike上线微信通知 利用pushplus公众号&#xff08;每天免费发送200条消息&#xff09; http://www.pushplus.plus/push1.html 扫码登录后需要复制token 可以测试一下发送一下消息&#xff0c;手机会受到如下消息。可以在微信提示里将消息免打扰关闭&#xff08;默认…

分布式光伏储能系统的优化配置方法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

期末复习提纲

复习提纲 题型&#xff1a;编程题3题&#xff0c;综合题4题。 一、编程题&#xff1a; 1、链表的类型定义&#xff1b;邻接矩阵表示图的类型定义&#xff1b;链接表表示图的类型定义&#xff1b;vector数组表示图的定义和使用方法。 2、链表中结点的插入和删除操作&#xff…

linux高级命令之编辑器 vim

编辑器 vim学习目标能够说出vim的三种工作模式能够说出vim对应复制和粘贴命令1. vim 的介绍vim 是一款功能强大的文本编辑器&#xff0c;也是早年 Vi 编辑器的加强版&#xff0c;它的最大特色就是使用命令进行编辑&#xff0c;完全脱离了鼠标的操作。2. vim 的工作模式命令模式…

2023想转行软件测试的看过来,你想要了解的薪资、前景、岗位方向、学习路线都讲明白了

在过去的一年中&#xff0c;软件测试行业发展迅速&#xff0c;随着数字化技术应用的广泛普及&#xff0c;业界对于软件测试的要求也在持续迭代与增加。 同样的&#xff0c;有市场就有需求&#xff0c;软件测试逐渐成为企业中不可或缺的岗位&#xff0c;作为一个高薪又需求广的…

怎么解密MD5,常见的MD5解密方法,一看就会

MD5是一种被广泛使用的密码散列函数&#xff0c;曾在计算机安全领域使用很广泛&#xff0c;但是也因为它容易发生碰撞&#xff0c;而被人们认为不安全。那么&#xff0c;MD5应用场景有哪些&#xff0c;我们怎么解密MD5&#xff0c;本文将带大家了解MD5的相关知识&#xff0c;以…

Laravel创建定时任务

创建一个任务&#xff0c;创建成功后会在App/Console/Commands中生成一个以Test命名的文件&#xff0c;我们可以在这里面写我们的任务指令。 php artisan make:command Test 运行这个定时任务 run 是运行一次&#xff0c;我们可以用来测试是否成功&#xff0c;work是一直运行&a…

Jenkins的使用教程

介绍&#xff1a; Jenkins是一个开源软件项目&#xff0c;是基于Java开发的一种持续集成工具&#xff0c;用于监控持续重复的工作&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件的持续集成变成可能。 目的: 最重要目的就是把原来分散在各个机器上繁杂的工作全部…

hadoop高可用搭建

修改计算机名称 //修改计算机名称 [rootlocalhost ~]# hostnamectl set-hostname ant150//快速生效 [rootlocalhost ~]# bash 主机名称映射 [rootant150 ~]# vim /etc/hosts 192.168.153.150 ant150 192.168.153.151 ant151 192.168.153.152 ant152 192.168.153.153 ant153 …

数据分析-深度学习 Tensorflow Day6

我们需要解决的问题&#xff1a;1&#xff1a; 什么是bp 神经网络&#xff1f;2&#xff1a;理解bp神经网络需要哪些数学知识&#xff1f;3&#xff1a;梯度下降的原理4: 激活函数5&#xff1a;bp的推导。1.什么是bp网络&#xff1f;引用百度知道回复&#xff1a;“我们最常用的…

【mmrotate】旋转目标检测之训练DOTA数据集

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 mmrotate训练DOTA数据集记录 1. 正文 1.1 数据准备 数据介绍部分&#xff0c;参考DOTA数据介绍&#xff0c;官方提供了裁剪工具development kit。这里…

LINUX内核链表

LINUX内核链表 一、传统链表的缺陷 传统的双向循环链表概念简单&#xff0c;操作方便&#xff0c;但存在有致命的缺陷&#xff0c;用一句话来概括就是&#xff1a; 每一条链表都是特殊的&#xff0c;不具有通用性。换句话说&#xff0c;对于每一种不同的数据&#xff0c;所构…

java对象克隆和面向对象的设计原则

java进阶注解内置注解元注解自定义注解对象克隆浅克隆深克隆java设计模式建模语言类之间的关系依赖关系关联关系单向关联双向关联自关联聚合关系组合关系继承关系实现关系面向对象设计原则单一职责开闭原则里氏替换原则依赖倒置接口隔离迪米特原则组合/聚合复用原则注解 java注…

关于ucharts在小程序中的使用

项目添加组件 画图之前&#xff0c;首先需要引入ucharts组件&#xff0c;引入链接https://ext.dcloud.net.cn/plugin?id271。 点击下图中红色方框内容&#xff1a; 导入完成后&#xff0c;与uni其他组件一样&#xff0c;无需引入&#xff0c;直接使用即可。 使用组件 uchar…

jhipster自动生成java代码的方法

一、前言 java springboot后台项目用到了jpa查询数据库&#xff0c;还用到了jhipster&#xff0c;这个东西可以自动生成基础的Controller、Service、Dao、JavaBean等相关代码&#xff0c;减少重复开发。 在此总结下使用方法。 二、jhipster自动生成java代码的方法 1.需要先…

KDHX-8700无线高压核相相序表

一、产品简介 KDHX-8700无线高压核相相序表&#xff08;以下简称“仪器”&#xff09;用于测定三相线相序、检测环网或双电源电力网闭环点断路器两侧电源是否同相。在闭环两电源之前一定要进行核相操作&#xff0c;否则可能发生短路。仪器适用于380V&#xff5e;35kV交流输电线…

JavaScript void

文章目录JavaScript voidjavascript:void(0) 含义href"#"与href"javascript:void(0)"的区别JavaScript void javascript:void(0) 含义 我们经常会使用到 javascript:void(0) 这样的代码&#xff0c;那么在 JavaScript 中 javascript:void(0) 代表的是什么…

RTSP协议交互时TCP/UDP的区别 以及视频和音频的区别 以及H264/H265的区别

经过这几天的调试 一个功能简单的 RTSP服务端已经实现了 支持TCP/UDP 支持H264 H265 支持同时传输 AAC音频 记录下 交互时需要注意的地方 1.OPTIONS 都一样 如下&#xff1a;左箭头内是客户端发给服务端 箭头内是服务端回给客户端 2.DESCRIBE 目前的流是包含视频和AAC音频…

计讯物联环保数采仪TS910在扬尘预警监测解决方案的应用

方案背景 随着我国经济高速发展和城市化进程的加速&#xff0c;城市建设工程规模不断扩大&#xff0c;工程施工给居住区、学校、医院等周边环境带来了巨大的影响&#xff0c;特别是扬尘污染带来的细颗粒物&#xff0c;严重危害到人体健康和大气环境质量。 因此&#xff0c;计…

MVC与MVVM

MVC与MVVM举例说明MVCMVVM两者比较MVC <!DOCTYPE html> <html><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><title>mvc案例</title><link rel"styleshe…