前言
所谓的服务 组件 (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
获取用户信息
post 请求:新增一位用户信息
url地址:http://localhost:8080/users
请求参数:{[id]:3,"name":"reader"}
新增用户
put请求:修改用户信息
url地址:http://localhost:8080/users/3
请求参数:{[id]:3,"name":"ramostear"}
修改用户
delete请求:删除用户信息
url地址:http://localhost:8080/users/3
删除用户
6. 附件
本章节用于演示的项目源码已经上传到github代码仓库,你可以通过下面的地址链接免费获取本章节的全部源码信息:
github测试数据/ramostear/s …
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
原文链接:https://juejin.im/post/5caddc715188251ad646b634
查看更多关于Spring Boot 2.0快速构建服务组件全步骤的详细内容...