SpringCloud学习笔记(一):构建SpringBoot项目
程序员文章站
2022-07-13 09:31:39
...
SpringCloud学习笔记(一):构建SpringBoot项目
快速搭建一个SpringBoot项目
SpringCloud是一个微服务治理框架,而SpringBoot可以用于快速构建一个微服务应用程序,在学习SpringCloud的道路上,SpringBoot是必经之路。
搭建过程
使用IDEA创建一个MAVEN项目
一路Next之后,新建的项目结构如下所示,我们要使用maven,来快速构建SpringBoot所需要的依赖文件。
打开pom.xml,在<project>标签内部加入如下依赖,手动导入依赖或者开启IDEA的自动导入
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<!-- 资源文件拷贝插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- java编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
此时SpringBoot所需要的依赖已经准备就绪了,接下来就要着手开始编写SpringBoot的启动器、控制器等部分了。
代码
首先,我们需要先在src/main/resource目录下面新建一个springboot内置容器启动需要的yml配置文件,名字可以随便起,我这里使用application.yml,内容如下
server:
port: 8090
##该服务将通过8090端口访问
spring:
application:
name: app-cargo
##暂时用不到,后续在注册中心中将使用到这一部分
然后,在java目录下新建controller、service、entity、runner四个包,对应控制器、服务层、实体、启动器,我们先在entity包下新建一个实体类,命名为Cargo
package entity;
public class Cargo {
private Long id;
private String name;
private String price;
//...省略Getter/Setter
@Override
public String toString() {
final StringBuffer sb = new StringBuffer("Cargo{");
sb.append("id=").append(id);
sb.append(", name='").append(name).append('\'');
sb.append(", price='").append(price).append('\'');
sb.append('}');
return sb.toString();
}
}
然后,在Service包下创建一个CargoService类,用于查询货物
package service;
import entity.Cargo;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
@Service
public class CargoService {
private static final Map<Long, Cargo> MAP = new HashMap<>();
static {// 准备一些静态数据,模拟数据库
MAP.put(1L,new Cargo(1L, "货物A", "10000"));
MAP.put(2L,new Cargo(2L, "货物B", "11000"));
MAP.put(3L,new Cargo(3L, "货物C", "11100"));
}
public Cargo queryCargoById(Long id) {
return MAP.get(id);//实际应该做一些DAO之类的操作,这里方便演示,所以这样写
}
}
接下来需要在Controller包下新建一个CargoController类,控制器应该将请求的参数传给Service层,然后从Service层处理并返回数据,最终返回到浏览器。代码如下
package controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import service.CargoService;
@RestController //RestController注解的类中的方法返回的值均默认采用了@ResponseBody注解
public class CargoController {
@Autowired
private CargoService cargoService;
@GetMapping("cargo/{id}")//简化了@RequestMapping(value,method)的写法
public String getCargo(@PathVariable("id") Long id){
return cargoService.queryCargoById(id).toString();
}
}
最后在Runner包下编写程序入口,代码如下
package runner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan({"service","controller"})//配置包扫描,不写会找不到Bean报404
public class MyFirstSpringBootApp {
public static void main(String[] args) {
SpringApplication.run(MyFirstSpringBootApp.class, args);
}
}
执行main方法,看到控制台输出
INFO 11012 --- [ main] runner.MyFirstSpringBootApp : Started MyFirstSpringBootApp in 3.497 seconds (JVM running for 6.539)
此时你编写的第一个SpringBoot项目就启动完成了,访问localhost:8090/cargo/1查看结果。
大功告成啦,我们的第一个简单的SpringBoot应用程序就构建完成了。
推荐阅读