前言
所謂的服務組件(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代碼倉庫,你可以通過下面的地址鏈接免費獲取本章節的全部源碼信息:
好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。
原文鏈接:https://juejin.im/post/5caddc715188251ad646b634