Spring Data

基于JDK8中Optional写出可读性高的代码

柔情痞子 提交于 2020-08-13 02:39:52
一、前言 JDK8中引入了函数式编程,大大提高了我们编写代码的可读性,其中Optional则是为了避免NPE而生,下面我们就来看看它是如何提高代码可读性的。 二、Optional 使用 假设我们代码里面下面DO对象: static class Wheel { public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } private String brand; } static class Car { public Wheel getWheel() { return wheel; } public void setWheel(Wheel wheel) { this.wheel = wheel; } private Wheel wheel; } static class Person { public Car getCar() { return Car; } public void setCar(Car Car) { this.Car = Car; } private Car Car; } 在不用Optional时候,如果我们想获取Person内嵌对象Wheel中的brand属性变量的值,在考虑避免NPE的情况下,代码可能如下: String

亲缘性线程池,这是什么鬼?

岁酱吖の 提交于 2020-08-12 05:09:02
一、前言 JDK中的线程池主要解决两个问题: 一方面当执行大量异步任务时候线程池能够提供较好的性能,在不使用线程池的时,每当需要执行异步任务时候是直接 new一线程运行,而线程的创建和销毁是需要开销的。而使用线程池时候,线程池里面的线程是可复用的,不会每次执行异步任务时候都重新创建和销毁线程。 另一方面线程池提供了一种资源限制和管理的手段,比如可以限制线程的个数,动态新增线程等,每个 ThreadPoolExecutor 也保留了一些基本的统计数据,比如当前线程池完成的任务数目等。 JDK中的线程池固然好,但是其不具有亲缘性,也就是当我们顺序向其中投递多个任务后,不能保证具有相同属性的任务顺序执行,本文我们就来看一个可以实现亲缘性的线程池。 二、测试案例 首先我们在做个测试,看看JDK中线程池是否具有亲缘性,我们创建一个Person类,其中id作为唯一标识,data为需要处理的数据,如下代码,我们创建一些Person对象,放到list,然后把任务顺序投递到JDK线程池: //0.普通线程池 static ExecutorService executorService = Executors.newFixedThreadPool(8); public static void executeByOldPool(List<Person> personList) { personList

MongoDB笔记整理

青春壹個敷衍的年華 提交于 2020-08-11 09:33:37
1、MongoDB简介 1.1、什么是MongoDB MongoDB 是一个跨平台的,面向文档的数据库,是当前 NoSQL 数据库产品中最热 门的一种。它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最 像关系数据库的产品。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以 存储比较复杂的数据类型。 对于数据量较大且价值较低的数据,可以使用mongodb减轻mysql的压力 MongoDB 的官方网站地址是: http://www.mongodb.org/ 1.2、MongoDB体系结构 MongoDB 的逻辑结构是一种层次结构。主要由: 文档(document) 、 集合(collection) 、 数据库(database) 这三部分组成的。逻辑结构是面 向用户的,用户使用 MongoDB 开发应用程序使用的就是逻辑结构。 (1)MongoDB 的文档(document),相当于关系数据库中的一行记录。 (2)多个文档组成一个集合(collection),相当于关系数据库的表。 (3)多个集合(collection),逻辑上组织在一起,就是数据库(database)。 (4)一个 MongoDB 实例支持多个数据库(database)。 文档(document)、集合(collection)、数据库(database)的层次结构如下图:

spring-springboot使用数据

风格不统一 提交于 2020-08-09 11:57:20
本章内容 使用spring的JdbcTemplate 使用SimpleJdbcInsert插入数据 使用SpringData声明JPAreposity 使用JDBC读取和写入数据 调整领域对象以适应持久化 在将对象持久化到数据库的时候,通常最好有一个字段作为对象的唯一标识。 使用JdbcTemplate 定义jdbcTemplate repository public interface IngredientRepository{ Iterable<Ingredient> findAll(); Ingredient findOne(String id); Ingredient save(Ingredient ingredient) } 开始使用jdbcTemplate编写repository @Repository public class JdbcIngredientRepository implements IngredientRepository{ private JdbcTemplate jdbc; @Autowired public JdbcIngredientRepository(JdbcTemplate jdbc) { this.jdbc = jdbc; } ... } @Override public Iterable<Ingredient> findAll(){

Spring Boot 2.3.0正式发布:优雅停机、配置文件位置通配符新特性一览

◇◆丶佛笑我妖孽 提交于 2020-08-08 21:23:46
当大潮退去,才知道谁在裸泳。。关注公众号【 BAT的乌托邦 】开启专栏式学习,拒绝浅尝辄止。本文 https://www.yourbatman.cn 已收录,里面一并有Spring技术栈、MyBatis、中间件等小而美的专栏供以学习哦。 目录 前言 关于版本号 正文 简单回忆2.2版本的新特性 主要新特性 优雅停机 配置属性的调整 删除不推荐使用的类/方法/属性 配置文件位置支持通配符 web下的日期转换支持配置 其它新特性 更改某些依赖最低版本要求 核心依赖升级 三方库依赖升级 Spring Data Neumann升级带来的变化 关于Validation 移除一些maven插件 支持Java14 Docker支持 Fat Jar支持优化 嵌入式Servlet Web Server线程配置 WebFlux基础路径配置 活性探测器 Actuator增强 好基友Spring Cloud什么时候跟上? 升级建议:等等 总结 前言 各位小伙伴大家好,我是A哥。北京时间2020-05-15,Spring Boot 2.3.0版本正式发布了,次版本号的升级,一般会有些新特性出来。作为Java Coder的我们有必要一览它的新new Feature,keep下技术节奏嘛。 A哥“第二时间”知道了这个消息,然后在自己本机(请注意:非生产环境)体验了一把,然后再结合Spring Boot官方的

Bug现场: com.mongodb.MongoCommandException: Command failed with error 18: &apos;Authentication failed.&apos;

吃可爱长大的小学妹 提交于 2020-08-04 18:37:49
Bug现场: 在Java代码与Mongodb连接时, 认证用户失败 , 导致的错误 代码: 报错: 原因: 因为创建时,用户是创在admin, 没在测试模块demo创建用户,所以,导致用户不一致,认证失败 解决: 有两种方案: 第一: 直接把连接的数据库名删了即可 第二:要么加上相应的数据库名即可 牢记: Mongodb不管是整合SpringData 后使用还是写最原始的代码 , 写代码时,要写与数据相匹配的, 不可胡乱的按自己想法写, 同时写完更要认真校对 突然想起一句话 , 实验是检验真理的唯一标准 , 哈哈~~~你品 ,细品 看完恭喜你,又知道了一点点!!! 你知道的越多,不知道的越多! ~感谢志同道合的你阅读, 你的支持是我学习的最大动力 ! 加油 ,陌生人一起努力,共勉!! 来源: oschina 链接: https://my.oschina.net/ithuang/blog/4312523

如何基于jackson动态序列化指定字段

僤鯓⒐⒋嵵緔 提交于 2020-08-04 14:18:09
一、前言 把对象序列化为json字符串输出的库很多,本文我们来看如何基于jackson动态控制哪些属性需要进行序列化。 二、序列化输出方式 对应使用Jackson,需要我们在pom文件中引入下面依赖: <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.11.1</version> </dependency> 首先简单看下如何使用: @Data static class Car { private String brand; private long price; private int load; private long id; } @Data static class House { private String title; private long price; private long id; } @Data static class Person { private Car car; private House house; private long weight; private long id; private String name; } public static Person

SpringBoot 集成 Elasticsearch 实战

ε祈祈猫儿з 提交于 2020-08-04 09:32:34
1. 前言 1.1. 集成方式 Spring Boot 中集成 Elasticsearch 有 4 种方式: REST Client Jest Spring Data Spring Data Elasticsearch Repositories 本文用后面两种方式来分别连接并操作 Elasticsearch 1.2. 环境与配置 服务端:elasticsearch-6.3.2 1 台 客户端:elasticsearch 6.4.1 服务端配置文件:elasticsearch.yml cluster.name: my-application network.host: 192.168 .1 .134 http.port: 9200 /etc/security/limits.conf cheng soft nofile 65536 cheng hard nofile 65536 /etc/sysctl.conf vm.max_map_count=262144 1.3. 版本 Spring Boot 2.0.5 默认的 elasticsearch 版本很低,这里我们用最新版本 6.4.1 如果启动过程中出现 java.lang.NoClassDefFoundError: org/elasticsearch/common/transport

简述 JPA 与 Spring Data JPA 与 Hibernate

情到浓时终转凉″ 提交于 2020-05-02 21:26:33
###1.JPA是什么?以及相关概述 JPA的是 Java Persistence API 的简写,是Sun官方提出的一种ORM规范! Sun提出此规范有2个原因: 1.简化现有Java EE和Java SE应用开发工作。 2.Sun希望整合ORM技术,实现天下归一。 重点在于,JPA是一套规范,而不是具体的ORM框架。 故Hibernate、TopLink 等ORM框架 都是JPA的实现,其中Hibernate已获得Sun的兼容认证。 JPA的标准的定制是hibernate作者参与定制的,所以JPA是Hibernate的一个总成。 优势在于: 1.开发者面向JPA规范的接口,但底层的JPA实现可以任意切换:觉得Hibernate好的,可以选择Hibernate JPA实现;觉得TopLink好的,可以选择TopLink JPA实现。 2.这样开发者可以避免为使用Hibernate学习一套ORM框架,为使用TopLink又要再学习一套ORM框架。 在项目中使用方式为:在实体类中,使用 @Entity 、 @Table 、 @Id 与 @Column 等注解。 示例代码如下: import javax.persistence.*; import javax.persistence.Id; @Entity @Table(name = "t_user")//数据库中表名 public

SpringBoot学习笔记(10):使用MongoDB来访问数据

时光毁灭记忆、已成空白 提交于 2020-05-01 23:14:36
SpringBoot学习笔记(10):使用MongoDB来访问数据 快速开始   本指南将引导您完成使用Spring Data MongoDB构建应用程序的过程,该应用程序将数据存储在MongoDB(基于文档的数据库)中并从中检索数据。关于MongoDB的相关教程可以参考其官方文档或者笔者的相关教程,我们主要探讨在SpringBoot中快速开始MongoDB数据库服务的相关操作。   本节内容的思维导图大致如下:    参考教程: https://spring.io/guides/gs/accessing-data-mongodb/ https://spring.io/guides/gs/accessing-mongodb-data-rest/ 基于Maven添加依赖   首先,需要设置一个基本的构建脚本。在使用Spring构建应用程序时,您可以使用任何您喜欢的构建系统,但此处包含了使用Maven所需的代码。   如果您不熟悉Maven,请参阅使用Maven构建Java项目。 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi