IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Educoder Spring 初体验 -> 正文阅读

[Java知识库]Educoder Spring 初体验

目录

第1关:创建博客系统中的对象

参考代码

第2关:Spring 框架创建对象

参考代码


第1关:创建博客系统中的对象

任务描述

本关任务:创建“博客系统”中的对象。

编程要求

在开始学习 Spring 框架之前我们先使用我们熟悉的方式(new对象的方式创建java对象)来创建“博客系统”中的所需对象并调用他们的方法,具体要求如下:

  • 三个实体类(用户User、博客Blog、评论Comment)已经创建完成,并且有相应方法,可在右侧文件夹中查看。

  • 在服务类Service中,集成了一些功能,需要你根据提示完成该类中的四个方法,在方法中创建对象并调用对象的相应方法。

  • 最后在客户端(Task类)中调用服务类的方法,首先注册,再登录,然后创建博客和发布评论。

完成任务后我们思考一下,使用 Java 的原生方法创建对象会出现什么问题?如果我们要更换博客类型( MarkDownBlog )又该如何修改代码?

测试说明

平台会对你编写的代码进行测试:

预期输出:

用户注册

用户登录

创建博客

发布评论


参考代码

Service.java

package com.educoder.step1;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.educoder.bean.Blog;
import com.educoder.bean.Comment;
import com.educoder.bean.User;

public class Service {

    /********** Begin **********/
    public void login() {
        // TODO 创建 user对象 调用登录方法
        User user = new User();
        user.login();
    }
    public void register() {
        // TODO 创建 user对象,调用注册方法
        User user = new User();
        user.register();
    }
    public void createBlog() {
        // TODO 创建博客对象,调用创建博客方法
        Blog blog = new Blog();
        blog.createBlog();
    }
    public void createComment() {
        // TODO 创建评论对象,调用创建评论方法
        Comment comment = new Comment();
        comment.createComment();
    }
    /********** End **********/
    
}

Task.java

package com.educoder.step1;

import com.educoder.bean.User;
import com.educoder.bean.Blog;
import com.educoder.bean.Comment;

public class Task {
    public static void main(String[] args) {
        /********** Begin **********/
        Service service = new Service();
        service.register();
        service.login();
        service.createBlog();
        service.createComment();
        /********** End **********/
    }
}

第2关:Spring 框架创建对象

任务描述

本关任务:使用 Spring 框架来创建“博客系统”中的对象。

相关知识

我们使用了传统的方式创建对象,本章节我们就来学习如何使用 Spring 创建对象.

使用Spring 的方式创建对象

在上一章节中我们思考了一些问题,那么相信同学们也都想到了直接使用 Java 原生方法创建对象时存在的一些问题:

  1. 每次都需要自己主动创建并销毁对象

  2. 更换博客类型的代价巨大(需要将服务类中的所有原博客对象都替换为MarkDownBlog 博客对象,代码的改动量非常大)

这说明我们编写的程序具有“高耦合性”,面对这类问题我们就可以通过 Spring 来进行改进。

首先,我们在Service类中定义好需要的类属性和方法:

public class Service {

private User user;

private Blog blog;

private Comment comment;

public void login() {}

public void register(){}

public void createBlog() {}

public void createComment(){}

}

现在和上一章节中一样,同样需要在方法里面调用类的方法。那我们使用 Spring 要怎么去实现呢?

我们只需要在Service类上加上一个@Component注解,在Service类属性上面添加@Autowired注解,最后在需要创建的相应对象上也添加@Component注解,就可以了。

下面我们以Blog类为例:

@Component //把对象注册到Spring容器中

public class Service {

? ?@Autowired

? ?private Blog blog;

? ?public void createBlog(){

? ? ? blog.createBlog();

? ?}

}

@Component

public class Blog {

public void createBlog() {System.out.println("创建博客");}

}

?最后我们在客户端调用Service中的方法:

public class Task {

? ?public static void main(String[] args) {

? ? ? ApplicationContext app = new?ClassPathXmlApplicationContext("applicationContext.xml");? ? ??

? ? ? //通过Spring容器获取Service对象

? ? ? Service service = (Service) app.getBean("service");

? ?//调用方法

? ? ? service.createBlog();

? ?}

}

这样就完成了使用 Spring 框架来实现相同的功能。并且在这个过程中,我们没有使用new关键字来创建对象。那么这个工作由谁去实现了呢?

实际上是由Spring 容器来帮我们做了这个事情。(后续我们进一步了解)

然后我们再看看ServicecreateBlog()方法中也没有对象的创建,也就是说这个创建对象的过程和结束已经不需要我们来进行管理了,通通由 Spring 来管理。

回到更换博客类型上,这时,我们只需要修改Service中的对象就可以了:

@Component

public class Service {

? ?@Autowired

? ?private MarkDownBlog blog; //MarkDownBlog 类上也添加了@Component注解

? ?//private Blog blog;

? ?public void createBlog(){

? ? ? blog.createBlog();

? ?}

}

或者,如果你不想修改对象,也是可以的,但是需要你另外创建一个接口,让 Blog 和 MarkDownBlog 同时实现该接口,这样你使用任意对象都可以。

编程要求

在右侧编辑器补充代码,使用 Spring 框架的方式来完成上一关卡的相同任务。

  • Service类中补充相应注解,并在相应方法中调用对象的方法。

  • Task类中完成对服务类的方法调用,顺序仍为注册、登录、创建博客和发布评论。

测试说明

平台会对你编写的代码进行测试:

预期输出:

用户注册

用户登录

创建博客

发布评论


参考代码

Service.java

package com.educoder.step2;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.educoder.bean.Blog;
import com.educoder.bean.Comment;
import com.educoder.bean.User;

/********** Begin **********/
@Component
public class Service {

    @Autowired
	private User user;
	
    @Autowired
	private Blog blog;
	
    @Autowired
	private Comment comment;
	
	public void login() {
        user.login();

	}
	
	public void register() {
        user.register();

	}
	
	public void createBlog() {
        blog.createBlog();

	}
	
	public void createComment() {
        comment.createComment();

	}
}

/********** End **********/

Task.java

package com.educoder.step2;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.educoder.bean.User;

public class Task {
	
    public static void main(String[] args) {
    	ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        //通过Spring容器获取Service对象
    	Service service = (Service) app.getBean("service");
    	/********** Begin **********/
        service.register();
    	service.login();
        service.createBlog();
        service.createComment();
        /********** End **********/
	}

}

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 11:40:47  更:2022-10-31 11:45:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 4:45:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码