好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

前言

所谓的服务 组件 (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快速构建服务组件全步骤的详细内容...

  阅读:12次