文章目录
- 一、前言
- 二、[Spring boot](https://www.yiibai.com/spring-boot/)
- 三、[Spring cloud](https://springcloud.cc/spring-cloud-dalston.html#_spring_cloud_config_server)
- 四、[Mybatis-plus](https://mybatis.plus/guide/)
- 五、[Druid](https://druid.apache.org/docs/latest/design/)
- 六、[nacos](https://nacos.io/zh-cn/docs/what-is-nacos.html)
- 七、[Spring Cloud Alibaba](https://juejin.im/entry/5c3eba5bf265da61257857da)
- 八、搭建
- 九、参考
一、前言
最近刚从数据分析,重新做回后台开发,心里一言难尽。但作为一个刚进入社会打拼的人来说,这都不算什么。正所谓做一行爱一行,脚踏实地的做好眼前的事情最为重要。
首先,我需要熟悉目前企业级开发常用的框架,并将它们做一个很好的集成。一个集成框架环境的学习与搭建,势必需要结合当前的项目和已有的开源项目。做这个文档的目的,主要是为应对以后的开发,不想在环境的搭建上耗费太多的时间,等到不同的开发场景时有一个很好的参考。
目前,比较流行的开发框架主要有Springboot、Mybatis、SpringCloud等。框架的目的,无一例外是为了简化开发的过程,减少开发人员的代码量,以及更为直观和便捷的配置项目。
本次搭建的环境为Springboot+Mybatis-plus+Druid+Spring Cloud Alibaba。Spring + MyBatis + Druid 被誉为黄金组合,再加上Spring Cloud Alibaba,相信会有不错的体验。以下为相关内容的具体描述。
二、Spring boot
Spring boot由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
使用Spring Boot将能够以更灵活的方式开发Spring应用程序,并且能够通过最小(或可能没有)配置Spring来专注于解决应用程序的功能需求。它使用全新的开发模型,通过避免一些繁琐的开发步骤和样板代码和配置,使Java开发非常容易。
Spring Boot可以轻松创建单独的,生产级的基于Spring的应用程序,我们只管“运行”。查看Spring平台和第三方库。大多数Spring Boot应用程序只需要很少的Spring配置。
Spring Boot的主要特点:
- 创建独立的Spring应用程序
- 直接嵌入Tomcat,Jetty或Undertow(无需部署WAR文件)
- 提供“初始”的POM文件内容,以简化Maven配置
- 尽可能时自动配置Spring
- 提供生产就绪的功能,如指标,健康检查和外部化配置
- 绝对无代码生成,也不需要XML配置
三、Spring cloud
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式环境中运行良好,包括开发人员自己的笔记本电脑,裸机数据中心,以及Cloud Foundry等托管平台。
四、Mybatis-plus
MyBatis是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
MyBatis-Plus特性:
无侵入;损耗小;强大的CURD操作;支持Lambda形式调用;支持主键自动生成;支持ActiveRecord模式;支持自定义全局通用操作;内置代码生成器;内置分页插件;分页插件支持多种数据库;内置性能分析插件;内置全局拦截插件。
五、Druid
Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。Druid已经在阿里巴巴部署了超过600个应用,是号称为监控而生的数据库连接池。
Druid核心主要包括:
- 基于Filter-Chain模式的插件体系。
- DruidDataSource高效可管理的数据库连接池。
- SQLParser。
Druid的主要功能如下:
- 是一个高效、功能强大、可扩展性强的数据库连接池。
- 可以监控数据库访问性能。
- 数据库密码加密。
- 获得SQL执行日志 。
- 扩展JDBC。
六、nacos
Nacos 致力于帮助开发人员发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助开发人员快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助开发人员更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理。包括:Kubernetes Service,gRPC & Dubbo RPC Service和Spring Cloud RESTful Service。
Nacos特性:
- 服务发现和服务健康检测
- 动态配置服务
- 动态DNS服务
- 服务及其元数据管理
七、Spring Cloud Alibaba
自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注。虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭借阿里中间件团队的背景,还是得到不少团队的支持;同时,由于Spring Cloud Alibaba中的几项主要功能都直指Netflix OSS中的重要组件,而后者最近频繁宣布各组件不在更新新特性,这使得Spring Cloud Alibaba关注度不断飙升,不少开发者或团队也开始小范围试水。
Spring Cloud Alibaba项目由两部分组成:阿里巴巴开源组件和阿里云产品组件,旨在为Java开发人员在使用阿里巴巴产品的同时,通过利用 Spring 框架的设计模式和抽象能力,注入Spring Boot和Spring Cloud的优势。
八、搭建
1.创建Spring boot工程
(1)首先打开idea->Create New project->选择项目类型:这里选择spring initializr,然后next。
(2)创建项目,填写项目名称,注意:不要能驼峰写法,可以用中横线,填写完毕后继续next。
(3)选择依赖。
(4)点next,直到最后finish。
2.配置pom.xml
仓库地址:https://mvnrepository.com/
(1)mybatis-plus。
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatisplus-spring-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatisplus-spring-boot-starter</artifactId>
<version>1.0.5</version>
</dependency>
(2)mysql驱动。
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
(3)Druid数据库连接池。
<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.18</version>
</dependency>
(4)Spring Cloud Alibaba:nacos作为配置中心,这里主要新加入了Nacos的配置客户端模块。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
(5)Spring Cloud,spring cloud的版本以及spring cloud alibaba的版本,置于dependencyManagement内。用于动态配置和服务发现。
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${latest.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>0.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
(6)lombok依赖,通过@lombok注解自动生成setter、getter方法。
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
(7)mybatis分页插件
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.10</version>
</dependency>
(8)swagger动态生成在线API文档。
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
3.配置数据源
springboot可以不用xml配置文件,但可以根据需求做相应的配置。在resource文件夹下面创建application.yml文件。
server: #指定端口
port: 80
spring:
application: #应用程序
name: com.bigdata
profiles:
active:dev #默认启动环境 dev/test
datasource: #数据源配置
url: jdbc:mysql://192.168.137.150:3306/springboot
username: root
password: 123
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource #要使用的连接池实现的完全限定名称。默认情况下,它是从类路径自动检测的。
druid: #连接池
max-active: 20
initial-size: 1
min-idle: 3
max-wait: 60000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
test-while-idle: true
test-on-borrow: false
test-on-return: false
filters:stat,wall,log4j
cloud:
#spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
config:
uri: http://127.0.0.1:8888
fail-fast: true
username: user
password: ${CONFIG_SERVER_PASSWORD:password}
retry:
initial-interval: 2000
max-interval: 10000
multiplier: 2
max-attempts: 10
mybatis-plus:
mapper-locations: classpath*:mapper/**/*Mapper.xml
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.yudao.platform.entity.*
global-config:
#主键类型 0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
id-type: 0
#字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
field-strategy: 2
#驼峰下划线转换
db-column-underline: false
#刷新mapper 调试神器
refresh-mapper: true
#数据库大写下划线转换
#capital-mode: true
# Sequence序列接口实现类配置
#key-generator: com.baomidou.mybatisplus.incrementer.OracleKeyGenerator
#逻辑删除配置
logic-delete-value: 1
logic-not-delete-value: 0
#自定义填充策略接口实现
#meta-object-handler: com.baomidou.springboot.xxx
#自定义SQL注入器
# sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
call-setters-on-nulls: true
debug: true
九、参考
https://blog.csdn.net/xiaolyuh123/article/details/75315282
https://juejin.im/entry/57fde63a5bbb50005b434217
application.properties详解:
https://www.cnblogs.com/louby/p/8565027.html