外贸公司网站如何做网上推广,北京网站推广排名公司,在哪里做网站好,网页美工图片在本系列研讨会中#xff0c;我们将使用spring boot#xff0c;docker构建一些微服务#xff0c;然后将它们部署到kubernetes中。 因此#xff0c;让我们开始吧。 首先#xff0c;我们需要定义一个问题陈述。 可以说我们要建立一个订单管理系统。 识别域 第一步将是了解… 在本系列研讨会中我们将使用spring bootdocker构建一些微服务然后将它们部署到kubernetes中。 因此让我们开始吧。 首先我们需要定义一个问题陈述。 可以说我们要建立一个订单管理系统。 识别域 第一步将是了解需要哪些域为简单起见假设我们需要以下域 命令 产品展示 客户或用户 购物车 现在我们知道我们正在构建什么让我们开始开发。 在本研讨会中我们将使用以下内容 用于微服务的Spring Boot 数据库的Postgres 构建的摇篮 Docker容器 第一微服务产品 让我们为产品构建第一个微服务我们将其称为产品服务其中将包含产品的详细信息。 步骤1使用spring初始化程序设置spring boot应用程序。 转到https://start.spring.io/并使用Java和SpringBoot 2.1.0生成gradle项目并提供以下值 群组IDcom.anirudhbhatnagar 工件productService dependeciesWebJpapostgresSQL 单击生成项目然后下载压缩的项目。 创建一个名为“ order_management_system”的新目录。 将项目解压缩到一个文件夹中然后将其内容复制到这个新目录中。 将项目导入到您喜欢的IDE中我们很容易开始。 通过在终端中运行项目来检查安装程序是否运行正常 ./gradlew build 由于DataSourceBeanCreationException构建将失败这是因为我们在项目中添加了PostgresSQL依赖关系但没有通过提供数据库凭证及其uri配置数据源。 让我们在下一步中做。 步骤2配置数据库 我们需要一个数据库来保存产品服务的产品详细信息。 为此我们需要两件事 –正在运行的postgres数据库 –在Spring配置其详细信息 首先创建一个本地postgres数据库。 我们可以使用docker映像来运行本地postgres DB。 为了使postgres数据库服务器作为docker映像运行我们需要在系统中安装docker。 使用此链接在您的mac中安装docker在Windows和Linux中可以找到类似的链接。 在您的机器上安装docker之后。 拉出最新的postgres映像然后在本地运行。 我们还将使用用户名和密码初始化数据库。 在终端中运行以下命令 $ docker run --name oms_postgres -p 5432:5432 -e POSTGRES_USERdbuser -e POSTGRES_DBproducts_db -e POSTGRES_PASSWORDpassword -d postgres 这将在您本地的端口5432上启动一个postgres服务器并用用户名“ dbuser”和密码“ password”初始化一个空的数据库“ postgres_db”。 一旦数据库启动并运行我们现在将配置Spring Boot应用程序的数据源。 使用Spring Boot的一种方法也许是最简单的一种方法是在application.properties文件中定义数据源URI和数据库凭据。 Spring Boot将使用这些凭据自动配置数据源。 打开项目中的application.properties文件然后添加以下内容 spring.datasource.urljdbc:postgresql://localhost:5432/products_db
spring.datasource.usernamedbuser
spring.datasource.passwordpassword
spring.jpa.hibernate.dialectorg.hibernate.dialect.PostgreSQLDialect 现在我们已经为应用程序配置了数据库让我们再次运行gradle构建。 建立 ./gradlew build 如果一切正常那么这次构建应该可以通过。 跑 ./gradlew bootRun 现在我们将在以下位置运行一个应用程序 http// localhost8080 /但是由于我们尚未实现任何服务因此它将提供一个404。为了使其正常工作请添加一些代码。 注意如果您使用的是postgres版本则可能会出现以下错误 java.sql.SQLFeatureNotSupportedException: Method org.postgresql.jdbc.PgConnection.createClob() is not yet implemented. 出现此异常是因为Atomikos支持的JPA休眠正在尝试验证PostgreSQL CLOB功能。 JDBC驱动程序未实现此功能因此驱动程序会引发不重要的异常。 要解决此问题请将以下内容添加到application.properties文件中 spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creationtrue 这将禁用驱动程序的功能检测无论如何我们都不会使用此功能 步骤3在产品服务中添加代码 现在我们的服务和数据库已设置完毕我们可以开始为产品服务编写一些代码。 在“ com.anirudhbhatnagar.productService”包中创建一个名为“ domain”的包并创建一个新的Java类“ Product”其属性为 id
name
description
sku Lombok 我们将使用Lombok为我们的bean添加构造函数gettersetter和builder方法。 要使用lombok请将其依赖项添加到build.gradle文件中 compileOnly org.projectlombok:lombok:1.18.4 在“产品”类上添加注释 Entity
Builder
AllArgsConstructor
NoArgsConstructor
Getter
public class Product {IdGeneratedValue(strategy GenerationType.AUTO)private Long id;private String name;private String description;private String sku;
} 注释的含义 1. Entity告诉spring boot JPA将此类视为一个实体并将其持久保存在数据库中。 2. Builder –这个lmobok注释将builder方法添加到我们的类中以使用Builder模式创建对象。 3. AllArgsConstructor –此lmobok批注将所有参数构造函数添加到类中Builder方法需要此方法。 4. NoArgsConstructor –该lmobok批注为该类添加了默认构造函数JPA需要此构造函数来获取实体。 5. Getter –这个lombok注释将getters添加到类中的所有字段这是获取产品的各个属性所必需的Jackson也使用此方法对字段进行序列化/反序列化。 为了在数据库中创建该表我们需要将jpa hibernate auto-ddl设置为true。 为此将以下行添加到application.properties文件 spring.jpa.hibernate.ddl-auto 创建 我们还在字段Id中添加了GeneratedValue和Id以告诉hibernate在表中创建新条目时自动为id生成值。 添加控制器 添加一个控制器以实现公开的Web服务并使用Jackson来对请求进行序列化/反序列化。 在“ com.anirudhbhatnagar.productService”包中创建一个名称为“ controller”的包并在其中创建一个新的Java类“ ProductController”。 用“ RestController”注释该类以将该类扩展为公开Web服务的Servlet。 用注解“ GetMapping”创建端点 RestController
public class ProductController {GetMapping(/products)public List getProducts() {return Collections.EMPTY_LIST;}PostMapping(/products)public Product save(RequestBody Product product) {return null;}
} 添加存储库 添加JPA存储库以将产品持久存储在数据库中。 在“ com.anirudhbhatnagar.productService”包中创建一个名称为“ repository”的包并在其中创建一个新接口“ ProductRepository” public interface ProductRepository extends JpaRepository {
} 将productRepository注入ProductController以便我们可以使用ProductController中的productRepository将在控制器中接收到的产品请求对象传递到存储库以进行获取和持久化。 RestController
public class ProductController {private ProductRepository productRepository;Autowiredpublic ProductController(ProductRepository productRepository) {this.productRepository productRepository;}GetMapping(/products)public List getProducts() {return productRepository.findAll();}PostMapping(/products)public Product save(RequestBody Product product) {return productRepository.save(product);}
} 现在我们已经启动了产品服务并在以下端点上运行 GET / products –获取所有产品 POST / products –创建新产品 在这里查看整个代码。 Dockerise应用 在应用程序的根文件夹中创建一个名为“ dockerFile”的文件并将以下内容添加到其中 FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY build/libs/*.jar app.jar
ENTRYPOINT [java,-Djava.security.egdfile:/dev/./urandom,-jar,/app.jar]
EXPOSE 8080 建立 docker build . 跑 docker run -p 8080:8080 [image-id] 这应该在localhost8080启动服务 测试应用程序 使用邮递员或任何其他类似工具提交此请求以创建产品 Http POST http// localhost8080 / products。 标头Content-Type application / json {
name : Nike shoes,
description : mens shoes size 10,
sku : 1234asc
} 可以通过以下方式获取产品GET http// localhost8080 / products 在下一个研讨会中我们将研究以下内容 Spring Cloud用于服务发现和客户端负载平衡的功能区 OpenFeign客户端 Kubernetes用于容器管理 API网关 翻译自: https://www.javacodegeeks.com/2018/11/spring-microservices-docker-kubernetes.html