使用@onetomany取不到值_SpringCloud微服务架构篇2:微服务基础—SpringBoot使用
Spring与Spring Boot
从开发及架构上,Spring框架具有以下优点:
- Spring的依赖反转功能让我们可以开发出方便进行测试的代码。
- 提供了易用、灵活、强大的数据事务管理支持功能。
- Spring强大的开放基因,使得其可以和众多框架,如JAP/hibernate、JSF、Kafka、RabbitMQ、Thymeleaf等整合。
- 提供了标准化的Web应用开发支持Spring MVC。
Spring Boot框架所提供的自动配置机制可以完成这些配置,快速启动一个项目,并且在后续的开发上配置保持最简。
在使用上,Spring Boot通过提供一系列名称以spring-boot-starter开头的启动器帮助我们简化项目的依赖。
- spring-boot-starter-web:Web应用开发
- spring-boot-starter-logging:日志处理
- spring-boot-starter-jpa:数据存储管理
- spring-boot-starter-security:安全管理
- spring-boot-starter-actuator:应用监控
- spring-boot-starter-data-redis:Redis数据库集成
- spring-boot-starter-amqp:消息中间件集成。
快速启动Spring Boot
2、编写应用引导类
@SpringBootApplication注解告诉Spring容器:使用该类作为所有Bean源,通过该起始点构建应用的上下文。
@SpringBootApplication注解继承自@EnableAutoConfiguration和@ComponentScan,通过该注解使得项目启动时Spring就会对该类所属目录下的所有子包进行扫描并根据SpringBoot的自动配置机制进行配置。
Application类的main()方法调用了SpringApplication.run(),该方法在项目启动时构建一个Spring容器,并返回一个ApplicationContext对象,也就是项目应用的上下文。
对于引导类来说其是整个应用启动的初始点,因为,如果在应用启动时需要进行某些初始化处理,那么最好都在该类中完成。
3、编写配置文件
Spring Boot配置文件支持properties和yml两种格式,默认文件名称都是application,存放在resources目录中。
4、运行项目
对后续将要编写的微服务来说,更多的时候是打包成一个部署单元。在打包时就会使用Maven脚本中配置的spring-boot-maven-plugin插件,然后通过mvn clean package命令将项目打包成一个Fat Jar,在生产环境下可以直接使用java -jar test.jar。
Fat jar是通过Mavne打包所生成的这种Jar不仅仅包含本项目中源码所编译生成的Java类文件,还会包含项目所依赖的第三方库及有关项目启动的相关信息。
spring-boot-starter-web默认依赖了spring-boot-starter-tomcat,通过该依赖,SpringBoot在启动应用时就会启动一个内嵌的Tomcat容器,并在该容器中运行项目。如果不想使用Tomcat作为启动容器,而是使用Jetty,那么可以在pom.xml文件中排除对Tomcat的依赖,并增加spring-boot-starter-jetty。
使用SpringBoot构建实例项目
1、经典三层应用架构
架构分层采用最广泛三层架构开发
- 客户端层UI层:主要用来与用户进行交互,显示数据并接受用户的输入。
- 应用层:关注业务规则的制定和业务流程的实现,负责与UI层进行交互及数据存储的处理。
- 业务逻辑层:定义业务实体(Domain),业务逻辑的具体实现(Service)。
- 接口层(API层):使用REST方式提供API接口,提供数据集业务处理(Controller)。
- 数据接口层(DAO):负责业务实体对象的数据处理(Repository)。
- 存储层:即持久层,主要用来保存我们的业务数据(Mysql、MongoDB、Redis或者文件存储系统)。
2、设计业务实体
清晰地识别出这些业务实体,以及它们之间如何交互及关联关系之后,才能进行下一步开发。
这些业务实体是开发系统的核心,一旦业务实体对象定义不合理,往往会造成业务逻辑实现的复杂度升高及系统灵活性降低,甚至可能需要重新设计开发。
3、实现数据管理
ORM(Object Relational Mapping)框架可以辅助将业务对象通过映射的方式存储到数据库中,而不需要使用最原始的SQL语句。
JPA(Java Persistence API)完成数据存储处理。通过JPA可以将业务与具体所要存储的数据库解耦,方便在多种数据库之间进行切换。
- @Entoty:指所注解的类会被认为是JPA的一个实体对象,JAP就会对该对象进行映射处理。
- @Id: 用来注解数据库主键,并且通过@GeneratedValue自动生成主键的方式,默认使用数据自增方式
- @OneToOne、@OneToMany、@ManyToOne、@ManyToMany:实体关联关系,用来处理业务实体之间一对一、一对多、多对一、多对多关系的声明。
- @Table :注解使用在业务实体类上,自定义实体类映射到数据库具体哪张表上。
- @Column :使用该注解自定义字段映射关系。
4、编写业务逻辑层
按照开发方式来说,设计和开发的顺序应该是:Entity->REST API->业务逻辑层->数据存储层,通过测试驱动的方式设计锁需要的功能。
DTO(Data Transfer Object):数据传输对象,用来处理跨进程或网络传输数据聚合容器。
5、编写RESTful API(Controller层)
Spring MVC针对Controller提供了两个注解@Controller和@RestController。
@RestController注解,在该类中所有使用了@RequestMapping的方法就会返回响应体(response body)。
@Controller注解,则会将HTML部分的代码也一起返回给调用者。
@RequestMapping注解,可以使用在方法或类上,如果是注解在类上,那么该类中所有注解的方法都会继承类中锁声明的属性。@GetMapping和@PostMapping,分别处理GET和POST请求。
6、数据库初始化
SpringBoot框架提供的Spring JDBC初始化DataSource特性,是在启动系统时检测classpath根目录下是否有schema.sql和data.sql脚本文件,如果这两个脚本文件都存在或其中一个,将会尝试加载并执行该脚本。如果脚本初始化产生异常,那么应用系统启动将会失败。
还可以在配置文件中通过设置spring.datasource.schema属性的值,定义数据库创建脚本的位置,通过spring.datasource.data属性设置数据初始化脚本的位置。如果将spring.datasource.initialize属性设置为false,则在启动时不将不执行数据库初始化处理。
使用@onetomany取不到值_SpringCloud微服务架构篇2:微服务基础—SpringBoot使用相关推荐
- Spring Cloud构建微服务架构(五)服务网关
通过之前几篇Spring Cloud中几个核心组件的介绍,我们已经可以构建一个简略的(不够完善)微服务架构了.比如下图所示: alt 我们使用Spring Cloud Netflix中的Eureka实 ...
- 什么是微服务架构?什么是服务注册与服务发现?
文章目录 基础名词 分布式 高可用 集群 什么是微服务 服务注册与服务发现 SpringCloud Alibaba 服务关系以及调用关系 服务注册中心 Nacos服务发现的领域模型 Nacos元数据 ...
- SpringCloud微服务架构实战:微服务治理
微服务治理 Spring Cloud 工具套件为微服务治理提供了全面的技术支持.这些治理工具主要包括服务的注册与发现.负载均衡管理.动态路由.服务降级和故障转移.链路跟踪.服务监控等.微服务治理的主要 ...
- Spring Cloud 云架构下的微服务架构:部门微服务(Dept)
作者 | springML 来源 | CSDN 博客 责编 | Carol 出品 | CSDN云计算(ID:CSDNcloud) 封图| CSDN下载于视觉中国 对于 Rest 基础架构实现处理是 S ...
- 1.微服务架构-什么是微服务
什么是微服务 我们先来看看为什么要考虑使用微服务. 构建单体应用 我们假设,您开始开发一个打车应用,打算与 Uber 和 Hailo 竞争.经过初步交流和需求收集,您开始手动或者使用类似 Rails. ...
- 微服务架构 与 Dubbo 微服务框架、SpringCloud 微服务框架 详解
微服务架构 与 Dubbo 微服务框架.SpringCloud 微服务框架 详解 什么是微服务架构? 微服务架构就是将单体的应用程序分成多个应用程序,这一个应用程序就组成一个服务,这多个应用程序就组成 ...
- hystrix 页面_SpringCloud微服务架构篇5:微服务熔断机制-Hystrix
由于网络原因或者自身的原因,微服务并不能保证服务百分之百可用.如果单个服务出现问题,则调用该服务时会出现延迟甚至调用失败的情况:若调用失败,用户则会重新刷新页面并尝试再次调用,再加上其他服务的调用,从 ...
- 微应用是什么_SpringCloud微服务架构篇1:微服务架构开发
大型分布式系统具有复杂性.隐匿性.配合性和易变性四大难题,不会存在任何单一软件工程上的突破,能让开发生产力得到一个数量级上的提升. 1.单体架构应用的困境 一个典型的单体架构应用就是将一个应用中所有的 ...
- php微服务架构设计模式,《微服务架构设计模式》读书笔记---第十一章:开发面向生产环境的微服务应用...
为了部署到生产环境中,需要考虑三个关键的质量属性:安全性,可配置性和可观测性. 开发安全的服务 需要实现安全性的四个方面: 身份验证. 访问授权.验证是否允许访问主体对指定数据完成请求的操作. 审计. ...
最新文章
- 使用深度学习阅读和分类扫描文档
- SQL操作的组成部分-数据查询
- Python多线程技术增加网站帖子的查看量
- 4g无线网卡搭建服务器,我买了一个4G无线网卡,可不知道怎么在手机里使用?
- [转]Windows 7 蓝屏后获取 MEMORY.DMP 文件及注意事项
- vue点击ul中的li显示,点击其他地方隐藏
- COM组件设计与应用(三)(转载)
- jsp value设置为函数的返回值_python中的生成器函数是如何工作的?
- spring定时,cronExpression表达式解释
- hdu acmsteps 2.1.3 Cake
- 数据库--Oracle
- 人工智能及其应用-产生式系统实验-植物识别系统-java
- 如何从CPU顶盖获取有用信息
- 从T7模型中取训练参数
- Excel如何在表格内打勾
- java程序员3-5年职业规划,附源代码
- Android 面试必备 - 线程
- 拼多多店铺是如何运营高客单价的商品,拼多多可以买高客单价的商品吗?
- 点赋网络:网店详情页设计中应包含哪些设计元素
- 几个常用的、重要的网络命令!(ping,Tracert ,winipcfg等)