springboot 启动 跳过数据库_SpringCloud微服务架构篇2:微服务基础—SpringBoot使用...

Spring与Spring Boot

从开发及架构上,Spring框架具有以下优点:

  1. Spring的依赖反转功能让我们可以开发出方便进行测试的代码。
  2. 提供了易用、灵活、强大的数据事务管理支持功能。
  3. Spring强大的开放基因,使得其可以和众多框架,如JAP/hibernate、JSF、Kafka、RabbitMQ、Thymeleaf等整合。
  4. 提供了标准化的Web应用开发支持Spring MVC。

Spring Boot框架所提供的自动配置机制可以完成这些配置,快速启动一个项目,并且在后续的开发上配置保持最简。

在使用上,Spring Boot通过提供一系列名称以spring-boot-starter开头的启动器帮助我们简化项目的依赖。

  1. spring-boot-starter-web:Web应用开发
  2. spring-boot-starter-logging:日志处理
  3. spring-boot-starter-jpa:数据存储管理
  4. spring-boot-starter-security:安全管理
  5. spring-boot-starter-actuator:应用监控
  6. spring-boot-starter-data-redis:Redis数据库集成
  7. spring-boot-starter-amqp:消息中间件集成。

快速启动Spring Boot

fb20ef2f0d7a2a049db228cdf275c026.png

3bb28106a8440c13699365190e23a8fb.png

2、编写应用引导类

@SpringBootApplication注解告诉Spring容器:使用该类作为所有Bean源,通过该起始点构建应用的上下文。

@SpringBootApplication注解继承自@EnableAutoConfiguration和@ComponentScan,通过该注解使得项目启动时Spring就会对该类所属目录下的所有子包进行扫描并根据SpringBoot的自动配置机制进行配置。

Application类的main()方法调用了SpringApplication.run(),该方法在项目启动时构建一个Spring容器,并返回一个ApplicationContext对象,也就是项目应用的上下文。

对于引导类来说其是整个应用启动的初始点,因为,如果在应用启动时需要进行某些初始化处理,那么最好都在该类中完成。

8e126f0ef161fd6235ace94ef36d88f9.png

3、编写配置文件

Spring Boot配置文件支持properties和yml两种格式,默认文件名称都是application,存放在resources目录中。

815cd625dc3788a594b8053a9f4be9bd.png

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、经典三层应用架构

架构分层采用最广泛三层架构开发

7b79cf68db3fa2a802f7339a1a9fbfcf.png
  1. 客户端层UI层:主要用来与用户进行交互,显示数据并接受用户的输入。
  2. 应用层:关注业务规则的制定和业务流程的实现,负责与UI层进行交互及数据存储的处理。
    1. 业务逻辑层:定义业务实体(Domain),业务逻辑的具体实现(Service)。
    2. 接口层(API层):使用REST方式提供API接口,提供数据集业务处理(Controller)。
    3. 数据接口层(DAO):负责业务实体对象的数据处理(Repository)。
  3. 存储层:即持久层,主要用来保存我们的业务数据(Mysql、MongoDB、Redis或者文件存储系统)。

2、设计业务实体

清晰地识别出这些业务实体,以及它们之间如何交互及关联关系之后,才能进行下一步开发。

这些业务实体是开发系统的核心,一旦业务实体对象定义不合理,往往会造成业务逻辑实现的复杂度升高及系统灵活性降低,甚至可能需要重新设计开发。

3、实现数据管理

ORM(Object Relational Mapping)框架可以辅助将业务对象通过映射的方式存储到数据库中,而不需要使用最原始的SQL语句。

JPA(Java Persistence API)完成数据存储处理。通过JPA可以将业务与具体所要存储的数据库解耦,方便在多种数据库之间进行切换。

  1. @Entoty:指所注解的类会被认为是JPA的一个实体对象,JAP就会对该对象进行映射处理。
  2. @Id: 用来注解数据库主键,并且通过@GeneratedValue自动生成主键的方式,默认使用数据自增方式
  3. @OneToOne、@OneToMany、@ManyToOne、@ManyToMany:实体关联关系,用来处理业务实体之间一对一、一对多、多对一、多对多关系的声明。
  4. @Table :注解使用在业务实体类上,自定义实体类映射到数据库具体哪张表上。
  5. @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,则在启动时不将不执行数据库初始化处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值