Spring Boot 2.0快速构建服务组件全步骤

时间:2022-04-04 00:00:53

前言

所谓的服务组件(service component)— 就是用于处理系统业务逻辑的类,如果按照系统分层设计理论来划分,服务组件是位于业务层当中的类。在spring boot中,服务组件是一个被**@service**注解进行注释的类,这些类用于编写系统的业务代码。在本章节中,将讲解如何创建并使用服务组件。

在开始正文之前,先来看两段示例代码。使用服务组件之前,我们需要定义服务组件接口类,用于索引服务组件提供的服务,代码如下所示:

?
1
2
3
public interface userservice{
 // todo ...
}

然后,需要使用**@service**注解对服务组件接口实现类进行注释,演示代码如下:

?
1
2
3
4
@service(value="userservice")
public class userserviceimpl implements userservice{
 //todo ...
}

最后,使用**@autowired**注解来自动引用服务组件,代码如下:

?
1
2
3
4
5
6
@controller
public class democontroller{
 @autowired
 userservice userservice;
 //todo ...
}

在本次讲解中,我们依然以对用户的增、删、改、查为案例,将控制器中的业务方法迁移到服务组件中。

1. 创建服务接口

创建一个包含添加用户、更新用户、删除用户和查询用户的服务接口类 — 用户服务组件接口类。详细代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package com.ramostear.application.service;
 
import com.ramostear.application.model.user;
 
import java.util.collection;
 
/**
 * created by ramostear on 2019/3/11 0011.
 */
public interface userservice {
 
 /**
 * create user
 * @param user
 */
 void create(user user);
 
 /**
 * update user info by id
 * @param id
 * @param user
 */
 void update(long id,user user);
 
 /**
 * delete user by id
 * @param id
 */
 void delete(long id);
 
 /**
 * query all user
 * @return
 */
 collection<user> findall();
}

2. 实现服务接口

创建一个接口实现类,用于实现其中的增、删、改、查四个业务方法,并用**@service**注解进行标注,具体代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package com.ramostear.application.service.impl;
 
import com.ramostear.application.model.user;
import com.ramostear.application.service.userservice;
import org.springframework.stereotype.service;
 
import javax.annotation.postconstruct;
import java.util.collection;
import java.util.hashmap;
import java.util.map;
 
/**
 * @author ramostear
 * @create-time 2019/3/11 0011-4:29
 * @modify by :
 * @since:
 */
@service(value="userservice")
public class userserviceimpl implements userservice {
 
 private static map<long,user> userrepo = new hashmap<>();
 
 @postconstruct
 public void inituserrepo(){
 user admin = new user();
 admin.setid(1).setname("admin");
 userrepo.put(admin.getid(),admin);
 
 user editor = new user();
 editor.setid(2).setname("editor");
 userrepo.put(editor.getid(),editor);
 }
 @override
 public void create(user user) {
 userrepo.put(user.getid(),user);
 }
 
 @override
 public void update(long id, user user) {
 userrepo.remove(id);
 user.setid(id);
 userrepo.put(id,user);
 }
 
 @override
 public void delete(long id) {
 userrepo.remove(id);
 }
 
 @override
 public collection<user> findall() {
 return userrepo.values();
 }
}

3. 使用服务组件

接下来,定义一个用户控制器,使用**@autowired**注解来应用用户服务组件,实现对用户的增、删、改、查功能:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package com.ramostear.application.controller;
 
import com.ramostear.application.model.user;
import com.ramostear.application.service.userservice;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.http.httpstatus;
import org.springframework.http.responseentity;
import org.springframework.web.bind.annotation.*;
 
/**
 * @author ramostear
 * @create-time 2019/3/11 0011-4:42
 * @modify by :
 * @since:
 */
@restcontroller
public class usercontroller {
 
 @autowired
 userservice userservice;
 
 
 @getmapping("/users")
 public responseentity<object> users(){
 return new responseentity<>(userservice.findall(), httpstatus.ok);
 }
 
 @postmapping("/users")
 public responseentity<object> create(@requestbody user user){
 userservice.create(user);
 return new responseentity<>("user is created successfully.",httpstatus.created);
 }
 
 @putmapping("/users/{id}")
 public responseentity<object> update(@pathvariable(name="id") long id,@requestbody user user){
 userservice.update(id,user);
 return new responseentity<>("user is updated successfully.",httpstatus.ok);
 }
 
 @deletemapping("/users/{id}")
 public responseentity<object> delete(@pathvariable(name = "id")long id){
 userservice.delete(id);
 return new responseentity<>("user is deleted successfully.",httpstatus.ok);
 }
}

4. 数据模型

用户对象的代码沿用以往章节的user.java代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.ramostear.application.model;
 
import lombok.getter;
import lombok.noargsconstructor;
import lombok.setter;
 
/**
 * @author ramostear
 * @create-time 2019/3/6 0006-3:12
 * @modify by :
 * @since:
 */
@getter
@setter
@noargsconstructor
public class user {
 private long id;
 private string name;
 
 public user setid(long id){
 this.id = id;
 return this;
 }
 
 public user setname(string name){
 this.name = name;
 return this;
 }
}

注:应用程序主类和maven build文件与之前章节的代码形同,不再列举。

5. 运行测试

启动spring boot应用程序,然后打开postman测试应用程序,分别进行如下的测试。

get 请求:获取所有的用户信息。

url地址:http://localhost:8080/users

Spring Boot 2.0快速构建服务组件全步骤

获取用户信息

post 请求:新增一位用户信息

url地址:http://localhost:8080/users

请求参数:{“id”:3,"name":"reader"}

Spring Boot 2.0快速构建服务组件全步骤

新增用户

put请求:修改用户信息

url地址:http://localhost:8080/users/3

请求参数:{“id”:3,"name":"ramostear"}

 Spring Boot 2.0快速构建服务组件全步骤

修改用户

delete请求:删除用户信息

url地址:http://localhost:8080/users/3

Spring Boot 2.0快速构建服务组件全步骤删除用户

6. 附件

本章节用于演示的项目源码已经上传到github代码仓库,你可以通过下面的地址链接免费获取本章节的全部源码信息:

github.com/ramostear/s …

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。

原文链接:https://juejin.im/post/5caddc715188251ad646b634