欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Boot 2.0快速構(gòu)建服務(wù)組件全步驟

 更新時(shí)間:2019年04月11日 11:41:45   作者:羅摩爾  
這篇文章主要給大家介紹了關(guān)于Spring Boot 2.0快速構(gòu)建服務(wù)組件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot 2.0具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

所謂的服務(wù)組件(Service Component)— 就是用于處理系統(tǒng)業(yè)務(wù)邏輯的類,如果按照系統(tǒng)分層設(shè)計(jì)理論來劃分,服務(wù)組件是位于業(yè)務(wù)層當(dāng)中的類。在Spring Boot中,服務(wù)組件是一個(gè)被**@Service**注解進(jìn)行注釋的類,這些類用于編寫系統(tǒng)的業(yè)務(wù)代碼。在本章節(jié)中,將講解如何創(chuàng)建并使用服務(wù)組件。

在開始正文之前,先來看兩段示例代碼。使用服務(wù)組件之前,我們需要定義服務(wù)組件接口類,用于索引服務(wù)組件提供的服務(wù),代碼如下所示:

public interface UserService{
 // TODO ...
}

然后,需要使用**@Service**注解對(duì)服務(wù)組件接口實(shí)現(xiàn)類進(jìn)行注釋,演示代碼如下:

@Service(value="userService")
public class UserServiceImpl implements UserService{
 //TODO ...
}

最后,使用**@Autowired**注解來自動(dòng)引用服務(wù)組件,代碼如下:

@Controller
public class DemoController{
 @Autowired
 UserService userService;
 //TODO ...
}

在本次講解中,我們依然以對(duì)用戶的增、刪、改、查為案例,將控制器中的業(yè)務(wù)方法遷移到服務(wù)組件中。

1. 創(chuàng)建服務(wù)接口

創(chuàng)建一個(gè)包含添加用戶、更新用戶、刪除用戶和查詢用戶的服務(wù)接口類 — 用戶服務(wù)組件接口類。詳細(xì)代碼如下:

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. 實(shí)現(xiàn)服務(wù)接口

創(chuàng)建一個(gè)接口實(shí)現(xiàn)類,用于實(shí)現(xiàn)其中的增、刪、改、查四個(gè)業(yè)務(wù)方法,并用**@Service**注解進(jìn)行標(biāo)注,具體代碼如下:

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. 使用服務(wù)組件

接下來,定義一個(gè)用戶控制器,使用**@Autowired**注解來應(yīng)用用戶服務(wù)組件,實(shí)現(xiàn)對(duì)用戶的增、刪、改、查功能:

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. 數(shù)據(jù)模型

用戶對(duì)象的代碼沿用以往章節(jié)的User.java代碼:

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;
 }
}

注:應(yīng)用程序主類和Maven build文件與之前章節(jié)的代碼形同,不再列舉。

5. 運(yùn)行測試

啟動(dòng)Spring Boot應(yīng)用程序,然后打開Postman測試應(yīng)用程序,分別進(jìn)行如下的測試。

GET 請(qǐng)求:獲取所有的用戶信息。

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

獲取用戶信息

POST 請(qǐng)求:新增一位用戶信息

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

請(qǐng)求參數(shù):{“id”:3,"name":"reader"}

新增用戶

PUT請(qǐng)求:修改用戶信息

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

請(qǐng)求參數(shù):{“id”:3,"name":"ramostear"}

 

修改用戶

DELETE請(qǐng)求:刪除用戶信息

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

刪除用戶

6. 附件

本章節(jié)用于演示的項(xiàng)目源碼已經(jīng)上傳到Github代碼倉庫,你可以通過下面的地址鏈接免費(fèi)獲取本章節(jié)的全部源碼信息:

github.com/ramostear/S …(本地下載

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Java?8?中?Function?接口使用方法介紹

    Java?8?中?Function?接口使用方法介紹

    這篇文章主要介紹了Java?8中?Function接口使用方法介紹,Java8中提供了一個(gè)函數(shù)式接口Function,這個(gè)接口表示對(duì)一個(gè)參數(shù)做一些操作然后返回操作之后的值
    2022-06-06
  • 基于java實(shí)現(xiàn)的ECC加密算法示例

    基于java實(shí)現(xiàn)的ECC加密算法示例

    這篇文章主要介紹了基于java實(shí)現(xiàn)的ECC加密算法,簡單說明了ECC算法的概念、原理,并結(jié)合實(shí)例形式分析了java實(shí)現(xiàn)ECC加密算法的定義與使用技巧,需要的朋友可以參考下
    2017-08-08
  • Java中的MessageDigest類加密詳解

    Java中的MessageDigest類加密詳解

    這篇文章主要介紹了Java中的MessageDigest類加密詳解,MessageDigest?類是一個(gè)引擎類,它是為了提供諸如?SHA1?或?MD5?等密碼上安全的報(bào)文摘要功能而設(shè)計(jì)的,需要的朋友可以參考下
    2024-01-01
  • SpringBoot使用@valid進(jìn)行參數(shù)校驗(yàn)的流程步驟

    SpringBoot使用@valid進(jìn)行參數(shù)校驗(yàn)的流程步驟

    SpringBoot 提供了一種方便的方式來進(jìn)行參數(shù)校驗(yàn):使用 Hibernate Validator,Spring Boot 提供了一種方便的方式來進(jìn)行參數(shù)校驗(yàn):使用 Hibernate Validator,所以本文給大家介紹了SpringBoot使用@valid進(jìn)行參數(shù)校驗(yàn)的流程步驟,需要的朋友可以參考下
    2023-09-09
  • SpringBoot解決jar包沖突的問題,簡單有效

    SpringBoot解決jar包沖突的問題,簡單有效

    這篇文章主要介紹了SpringBoot解決jar包沖突的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java ArrayBlockingQueue阻塞隊(duì)列的實(shí)現(xiàn)示例

    java ArrayBlockingQueue阻塞隊(duì)列的實(shí)現(xiàn)示例

    ArrayBlockingQueue是一個(gè)基于數(shù)組實(shí)現(xiàn)的阻塞隊(duì)列,本文就來介紹一下java ArrayBlockingQueue阻塞隊(duì)列的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • 簡單了解java集合框架LinkedList使用方法

    簡單了解java集合框架LinkedList使用方法

    這篇文章主要介紹了簡單了解java集合框架LinkedList使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java中的BaseTypeHandler自定義類型轉(zhuǎn)換器的使用

    Java中的BaseTypeHandler自定義類型轉(zhuǎn)換器的使用

    這篇文章主要介紹了Java中的BaseTypeHandler自定義類型轉(zhuǎn)換器的使用,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • Java版AI五子棋游戲

    Java版AI五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了Java版AI五子棋游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • springboot之redis cache TTL選項(xiàng)的使用

    springboot之redis cache TTL選項(xiàng)的使用

    這篇文章主要介紹了springboot之redis cache TTL選項(xiàng)的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評(píng)論