1 热部署
org.springframework.boot spring-boot-devtools 复制代码# 默认不触发重启的目录列表/META-INF/maven/META-INF/resources/resources/static/public/templates# 自定义不参与重启排除项spring: devtools: restart: # 设置不参与热部署的文件或文件夹 exclude: static/**,public/**,config/application.yml复制代码System.setProperty("spring.devtools.restart.enabled","false");复制代码@ConfigurationProperties可以为第三方bean绑定属性
@Bean@ConfigurationProperties(prefix = "datasource")public DruidDataSource datasource(){ DruidDataSource ds = new DruidDataSource(); //ds.setDriverClassName("com.mysql.jdbc.Driver123"); return ds;}复制代码dataSource: driverClassName: com.mysql.jdbc.Driver789复制代码@EnableConfigurationProperties注解可以将使用@ConfigurationProperties注解对应的类加入Spring容器管控
@SpringBootApplication@EnableConfigurationProperties(ServerConfig.class)public class Springboot13ConfigurationApplication {}复制代码@Data//@Component@ConfigurationProperties(prefix = "servers")public class ServerConfig {}复制代码注意:@EnableConfigurationProperties与@Component不能同时使用
解除使用@ConfigurationProperties注释警告
org.springframework.boot spring-boot-configuration-processor 复制代码@ConfigurationProperties绑定属性支持属性名宽松绑定
注意:宽松绑定不支持注解@Value引用单个属性的方式
注意:绑定前缀名命名规范:仅能使用纯小写字母、数字、下划线作为合法的字符
SpringBoot支持JDK8提供的时间与空间计量单位
@Data@Component@ConfigurationProperties(prefix = "servers")public class ServerConfig { private String ipAddress; private int port; private long timeout; @DurationUnit(ChronoUnit.HOURS) private Duration serverTimeOut; @DataSizeUnit(DataUnit.MEGABYTES) private DataSize dataSize;}复制代码开启数据校验有助于系统安全性,J2EE规范中JSR303规范定义了一组有关数据校验相关的API
①:添加 JSR303 规范坐标与 Hibernate 校验框架对应坐标
javax.validation validation-api org.hibernate.validator hibernate-validator 复制代码②:对 Bean 开启校验功能
③:设置校验规则
@Data@Component@ConfigurationProperties(prefix = "servers")//2.开启对当前bean的属性注入校验@Validatedpublic class ServerConfig { //3.设置具体的规则 @Max(value = 8888,message = "最大值不能超过8888") @Min(value = 202,message = "最小值不能低于202") private int port;}复制代码通用配置无法设置具体的数据源配置信息,仅提供基本的连接相关配置,如需配置,在下一级配置中设置具体设定
org.springframework.boot spring-boot-starter-jdbc 复制代码spring: jdbc: template: query-timeout: -1 # 查询超时时间 max-rows: 500 # 最大行数 fetch-size: -1 # 缓存行数复制代码 com.h2database h2 org.springframework.boot spring-boot-starter-data-jpa 复制代码server: port: 80spring: h2:console: path: /h2 enabled: true复制代码create table tbl_book (id int,name varchar,type varchar,description varchar)复制代码server: port: 80spring: datasource: # 可省 driver-class-name: org.h2.Driver url: jdbc:h2:~/test username: sa password: 123456 h2: console: path: /h2 enabled: true复制代码server: port: 80spring: h2: console: path: /h2 enabled: false复制代码市面上常见的NoSQL解决方案:
RedisMongoESSolr
org.springframework.boot spring-boot-starter-data-redis 复制代码spring: redis: host: localhost # 127.0.0.1 port: 6379复制代码# lettuce(内部默认实现)(连接是基于 Netty 的,Netty 是一个多线程、事件驱动的 I/O 框架。)底层设计中采用 StatefulRedisConnection。StatefulRedisConnection 自身是线程安全的,可以保障并发访问安全问题,所以一个连接可以被多线程复用。当然lettcus也支持多连接实例一起工作。# jedis(直接连接Redis Server即直连模式,如果在多线程环境下使用 jedis是非线程安全的。)解决方案可以通过配置连接池使每个连接专用,这样整体性能就大受影响。复制代码(1)依赖
redis.clients jedis 复制代码(2)配置
spring: redis: host: localhost port: 6379 client-type: jedis lettuce: pool: max-active: 16 jedis: pool: max-active: 16复制代码MongoDB is an open-source NoSQL document database that uses a JSON-like schema instead of traditional table-based relational data.
参考:
# 下载 msi 文件、安装https://www.mongodb.com/try/download/community# 创建3个文件夹:/data、/log、/data/log/# 服务端启动 C:\Program Files\MongoDB\Server\5.0\bin>mongod --dbpath C:\enviroment\mongodb\data\db# 客户端启动mongo# 配置环境变量# 可视化客户端——Robo 3T、Navicat复制代码# 启动in ~/environment/mongodb $ mongod --fork --dbpath data --logpath log/mongodb.log --logappend$ mongo# 可视化客户端Robo 3T# 退出# 验证权限;赋予权限;关闭> db.auth('root','123456')1> db.grantRolesToUser("root",[{role:"hostManager",db: "admin"}])> use adminswitched to db admin> db.shutdownServer({force:true})复制代码# 基础操作CRUD// 添加数据(文档)// db.book.save({"name":"springboot基础篇",type:"springboot"})// 删除操作// db.book.remove({type:"springboot"})// 修改操作db.book.update({name:"springboot"},{$set:{name:"springboot2"}})// 查询操作// db.getCollection('book').find({})db.book.find()复制代码显示所有数据库:show dbs / show databases(都是一样的)显示所有集合/表:show collections / show tables(都是一样的)显示当前使用数据库:db / db.getName();数据库状态:db.stats()复制代码 org.springframework.boot spring-boot-starter-data-mongodb 复制代码spring: data: mongodb: uri: mongodb://localhost/itheima复制代码@SpringBootTestclass Springboot17MongodbApplicationTests { @Autowired private MongoTemplate mongoTemplate; @Test void contextLoads() { Book book = new Book(); book.setId(2); book.setName("springboot2"); book.setType("springboot2"); book.setDescription("springboot2"); mongoTemplate.save(book); } @Test void find(){ List all = mongoTemplate.findAll(Book.class); System.out.println(all); }}复制代码 Elasticsearch 是一个基于 Lucene 的搜索服务器,它给我们提供了一个分布式的全文搜索引擎。Elasticsearch 是用 Java 语言开发、基于 Apache 协议的开源项目,它也是目前最受欢迎的企业搜索引擎。Elasticsearch 广泛运用于云计算中,能够达到实时搜索,具有稳定,可靠,快速的特点。
简单来说 Elasticsearch 是一个实时的分布式搜索分析引擎,它能让你以前所未有的速度和规模,去探索你的数据。
它被用作全文检索、结构化搜索、分析,现在也有很多知名企业或网站都在使用 Elasticsearch 来实现搜索服务,比如:
操作 Elasticsearch 前,我们需要准备一个客户端(就像用 Navicat 操作数据库一样)
Kibana 可以使大数据通俗易懂。它很简单,基于浏览器的界面便于您快速创建和分享动态数据仪表板来追踪 Elasticsearch 的实时数据变化。搭建 Kibana 非常简单。您可以分分钟完成 Kibana 的安装并开始探索 Elasticsearch 的索引数据 —— 没有代码、不需要额外的基础设施。
访问 http://localhost:9200/_cat/indices?v ,如果页面只显示了一句“health status index uuid pri rep docs.count docs.deleted store.size pri.store.size”,则证明还未创建索引!
我们通过 kibana(http://127.0.0.1:5601/app/kibana#/dev_tools/) 来创建索引,如下
PUT /test?pretty 代表我们需要创建一个名为 test 的索引,pretty 参数则是要求它返回一个漂亮的 json 结果
查看索引信息:http://localhost:9200/_cat/indices?v
也可以通过 kibana 来查看索引信息
节点(node)是一个运行着的 Elasticsearch 实例,你可以认为是单个服务器。
集群(cluster)是一个或多个节点的集合,他们协同工作,共享数据并提供故障转移和扩展功能。一个集群对应着一个唯一的名字标识(默认是“ElasticSearch”),一个节点只能通过指定某个集群的名字,来加入这个集群
访问 http://localhost:9200/_cat/health?v 来查看当前集群的状态
集群的状态一共有三种值,分别是:
可以通过访问 http://localhost:9200/_cat/nodes?v 来查看节点信息
在一个索引中,你可以定义一种或多种类型。一个类型对应着你的索引在一种逻辑上的分类,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。
比如你运营着一个购物平台,并且你将所有的数据都存储到一个索引中,那么在这个索引中,你可以为用户数据定义一个类型,为商品数据定义另一个类型,也可以将订单数据定义成另一个类型。
这就有点像在 Mysql 中建表一样,将同样类型的数据都放在同一个表中。
一个文档是一个可被索引的基础信息单元(文档以 JSON 格式来表示)
还是以上面的购物平台为例,你可以拥有某一个客户的文档,或者是某一种商品的文档。在一个索引或类型中可以存储任意多的文档。
这就有点像 Mysql 中的某一张表可以拥有若干条数据一样。
相当于是 Mysql 中某张表所拥有的若干个字段,它可以根据不同的属性对文档数据进行分类标识。
Elasticsearch 是一个接近实时的搜索引擎。这意味着,从索引一个文档到这个文档能够被搜索到会有一个轻微的延迟(通常是1秒)。
mapping 是对处理数据的方式和规则方面做出的一些限制,如某个字段的数据类型、默认值、是否被索引等等,这些都是映射里面做出限制。
| 留言与评论(共有 0 条评论) “” |