使用 Spring Boot 开发一个简单的服务

在这篇文章中,我将演示如何使用 Spring Boot 创建一个简单的 Web 服务。这个框架使得开发 Web 服务几乎毫不费力,只要适当的依赖关系就位。在此示例中,我将创建一个 Web 服务,该服务将从文件中读取当前温度,并通过 RESTful 端点将其提供给客户端。

Spring Initializr 帮助人们选择生产特定解决方案所需的依赖项。Initializr 可以在以下位置找到: https ://start.spring.io/

使用 Initializr 创建项目时要注意的第一件事是,可以使用多种不同的 JVM 语言(包括 Java、Kotlin 或 Groovy)开发 Spring Boot 应用程序。这是 Spring Boot 与主要关注 Java 语言的 Jakarta EE 不同的一个领域。还可以为他们的 Spring Boot 项目选择 Gradle 或 Maven。使用 Initialzr 创建项目的最乏味的部分之一可能是为项目选择合适的依赖项。原因是存在如此多的依赖项选项,可能需要一段时间才能了解哪些对特定解决方案最有用。这不是一件坏事……它只是需要随着时间的推移而学习的东西。

要开始使用,请在 Initializr 中选择以下选项:

项目:马文

语言:Java

春季启动:2.3.3

依赖项:Spring Web

项目元数据

– 组:org.demo

– 神器:poolservice

– 名称:池服务

– 包名:org.demo.poolservice

– 包装:战争

– 爪哇:11

选择这些选项后,单击“生成”以下载项目文件。下载后,在您喜欢的 IDE 中打开项目。在这种情况下,我将使用 Apache NetBeans 12。现在可以构建项目并将其部署到容器,例如 Payara 服务器。该项目已配置并准备好开始添加 RESTful 服务。以下代码显示了由 Initializr 创建的生成的 PoolserviceApplication 类,其中包含 @SpringBootApplication 注解。

package org.demo.poolservice;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 
@SpringBootApplication
public class PoolserviceApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(PoolserviceApplication.class, args);
    }
 
}

@SpringBootApplication 注解是一个快捷注解,它结合了以下三个注解的默认功能:

  • @EnableAutoConfiguration:启用 Spring Boot 自动配置
  • @ComponentScan:在加载应用程序的包上启用组件扫描
  • @Configuration:允许在上下文中注册额外的 bean 或导入额外的配置类的能力

由于应用程序是默认配置的,因此通过在同一个包中创建一个名为 HelloController 的类并将以下代码放入其中来生成一个新的 RESTful 服务:

package org.demo.poolservice;
 
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
 
@RestController
public class HelloController {
 
    @RequestMapping("/")
    public String index() {
        return "Greetings from Spring Boot This is the main service!";
    }
 
}

@RestController 注释通过结合传统的@Controller 和@ResponseBody 注释功能将类连接为RESTful Web 服务控制器。在此示例中,我使用请求根来提供响应,如 @RequestMapping 注释所示。一旦添加了这个控制器类并编译和重新部署了代码,就可以访问 URL
http://localhost:8080/poolservice 以显示消息:“来自 Spring Boot 的问候,这是主要服务!”。

是时候通过创建一个名为 TemperatureReader 的新类来添加从文本文件(由 Raspberry Pi 编写)中读取当前温度的功能了。通过使用 @Component 注释并指定引用该 bean 的名称,可以使此类成为上下文 bean。在这种情况下,“温度读取器”。该类的功能非常简单,因为它从格式为 (23.5, 78.3) 的文件中读取温度,并分别通过currentTemperatureCcurrentTemperatureF访问它们。

package org.demo.poolservice;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import org.springframework.stereotype.Component;
 
 
@Component("temperatureReader")
public class TemperatureReader {
     
    private String currentTemperatureF;
     
    private String currentTemperatureC;
     
    protected String readTemperatureFile() {
         
         
        String temperatureFile = "/<>/temperature.txt";
        System.out.println("Temperature File: " + temperatureFile);
        java.nio.file.Path path = Paths.get(temperatureFile);
        String currentTemperature = null;
        try (BufferedReader reader = Files.newBufferedReader(path, Charset.forName("UTF-8"))) {
 
            String currentLine = null;
            while ((currentLine = reader.readLine()) != null) {//while there is content on the current line
                currentTemperature = currentLine;
            }
        } catch (IOException ex) {
            ex.printStackTrace(); //handle an exception here
        }
        return currentTemperature;
    }
 
    /**
     * @return the currentTemperatureF
     */
    public String getCurrentTemperatureF() {
        String temp = readTemperatureFile();
        currentTemperatureF = temp.substring(temp.indexOf(",") + 1, temp.lastIndexOf(")"));
        return currentTemperatureF;
    }
 
    /**
     * @param currentTemperatureF the currentTemperatureF to set
     */
    public void setCurrentTemperatureF(String currentTemperatureF) {
        this.currentTemperatureF = currentTemperatureF;
    }
 
    /**
     * @return the currentTemperatureC
     */
    public String getCurrentTemperatureC() {
        String temp = readTemperatureFile();
        currentTemperatureC = temp.substring(temp.indexOf("(") + 1, temp.lastIndexOf(","));
        return currentTemperatureC;
    }
 
    /**
     * @param currentTemperatureC the currentTemperatureC to set
     */
    public void setCurrentTemperatureC(String currentTemperatureC) {
        this.currentTemperatureC = currentTemperatureC;
    }
     
}

最后,要通过 RESTFul 服务提供温度读数,请创建一个名为 TemperatureController 的控制器并使用 @RestController 对其进行注释。通过使用 @Autowired 注释私有 TemperatureReader 字段来注入 TemperatureReader。然后可以使用 bean 通过使用 TemperatureReader 字段来获取温度。服务的 URL 映射是通过 index() 方法上的 @RequestMapping(“/temperature”) 注释提供的,它将用于在相应的请求映射中提供温度。index() 方法中包含的功能非常少,因为它仅调用
temperatureReader.getCurrentTemperatureF() 方法以返回当前华氏温度。

package org.demo.poolservice;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
 
@RestController
public class TemperatureController {
     
    @Autowired
    private TemperatureReader temperatureReader;
     
    @RequestMapping("/temperature")
    public String index() {
            return temperatureReader.getCurrentTemperatureF();
    }
     
}

学习更多JAVA知识与技巧,关注与私信博主(学习)

使用 Spring Boot 开发一个简单的服务_第1张图片

你可能感兴趣的:(sql,spring,数据库开发,数据库架构,java)