分类: 编程

  • Spring Boot 集成 Elasticsearch

    Elasticsearch (简称ES) 是一个基于 Lucene 的分布式、高扩展、高实时的搜索与数据分析引擎。本章介绍 Spring Boot 应用集成 Elasticsearch ,通过 Spring 封装的API访问 Elasticsearch 。

    Spring Data Elasticsearch 是 Spring Data 子项目,提供对 Elasticsearch 集成与访问的支持。需要注意的是 Spring Data Elasticsearch 版本 3.2.x 与 4.x 不兼容,在升级 Spring Boot 版本时要做好评估。本章是以 Spring Data Elasticsearch 4.x 为基础。

    (更多…)
  • Spring Boot 集成 Sharding JDBC 分库分表

    Apache ShardingSphere 是一套开源的分布式数据库解决方案组成的生态圈,它由 JDBC、Proxy 和 Sidecar 这 3 款既能够独立部署,又支持混合部署配合使用的产品组成。它们均提供标准化的数据水平扩展、分布式事务和分布式治理等功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。

    (更多…)
  • Spring Boot 集成 Kafka Stream

    Kafka 从0.10版本开始支持流处理,我们可以使用 Kafka Streams 来开发实时应用程序。本章介绍 Spring Boot 集成 Kafka Streams 进行流式计算。

    Spring Boot 集成 Kafka 的基本配置和用法在”Spring Boot 集成 Kafka“有介绍,这里不再详述。

    (更多…)
  • Spring Boot 集成 Kafka

    Kafka 是由 Apache 软件基金会开发的一个开源流处理平台,由 Scala 和 Java 编写。 Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。本章介绍 Spring Boot 集成 Kafka 收发消息。

    (更多…)
  • Spring Boot 集成 ActiveMQ (Artemis)

    Apache ActiveMQ 是一款基于 Java 的消息服务器,它使用行业标准协议,支持我们把各种语言和平台开发的系统连接在一起。目前 ActiveMQ 分为两个版本:ActiveMQ 5 和 ActiveMQ Artemis (下一代ActiveMQ)。当 ActiveMQ Artemis 达到 ActiveMQ 功能时会变为 ActiveMQ 6 。

    Spring JMS 是专门用来处理 Spring 消息的模块。它支持主流的消息中间键,能完美结合 ActiveMQ 。Spring Boot 应用通过集成 Spring JMS 模块整合 ActiveMQ ,本文涉及 ActiveMQ 5 和 ActiveMQ Artemis 两种配置方法,根据项目实际使用 ActiveMQ 的版本,采取一种配置即可。

    (更多…)
  • Spring Boot 集成 Redis

    Redis 是一个高性能的Key-Value内存数据库。Spring 官方对 Redis 提供支持,使用 Spring Data Redis 可以选择 Jedis 或 Lettuce 客户端,在 Spring Boot 项目中操作 Redis 简单方便。

    Spring Data Redis 是 Spring Data 家族的一部分,它提供了配置方法和访问 Redis 接口的抽象。在内底层实现上,我们可以选择使用 Jedis 或 Lettuce 来访问 Redis 数据库。

    (更多…)
  • Spring Boot 集成 MyBatis Plus

    MyBatis Plus 是 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis Plus 提供 Spring Boot 支持。全新的 MyBatis Plus 3.0 版本基于 JDK8,提供了 lambda 形式的调用。

    (更多…)
  • Spring Boot 集成 JUnit 单元测试

    为自己的应用编写单元测试是一个很好的习惯。在Java开发中最流行的测试工具非JUnit莫属,它已经成为Java单元测试的事实标准。Spring Boot测试模块不仅集成JUnit框架,还提供了许多实用程序和注解,方便我们测试应用。

    (更多…)
  • Spring Boot 集成 Spring JDBC

    Spring JDBC模块负责访问操作数据库,在中小型项目中使用Spring框架自己的JdbcTemplate方便快捷,而且稍加封装完全不输MyBatis框架。

    Spring 生态中的 Spring Data JDBC 和 Spring Data JPA 就是对原生JDBC的加强,它提供查询数据库并映射成实体的功能,和MyBatis有很多相似之处。关于 Spring Data 相关的知识会另起新篇。

    (更多…)
  • Spring Boot 集成 Spring MVC

    Spring MVC是一款优秀的、基于MVC思想的应用框架,它是Spring的一个子框架。是当前最优秀的MVC框架。

    Spring Boot整合Spring MVC只需在pom.xml中引入

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>${version}</version>
    </dependency>
    (更多…)
  • Spring Boot 应用快速开始

    越来越多的Java应用基于Spring Boot,那么如何快速创建应用并开发部署呢?

    创建项目

    方式一:Spring Initializr

    Spring initializr是Spring官网提供的工具,只要选择Spring Boot版本,输入项目信息,就会自动生成项目工程,用Eclipse或Ideal导入,即可开始。

    (更多…)
  • IntelliJ IDEA 启动报错

    打开idea报错:Address already in use: bind

    昨天还用的好好的,只是后来升级Android Studio插件失败过。Android Studio是Google基于Idea开发的,所以会不会是这个影响?

    打开Android Studio,发现也报错。

    (更多…)
  • Sharding JDBC Demo 2.0 (主从版)

    从今年初接触Sharding JDBC 4.0到现在,近一年了,用来做日志和消息分表一直运行,没什么大的问题。前些天生产新上了一个服务,是因为Sharding JDBC把select for update语句解析为查询,在从库中执行,因为从库是只读权限所以报错。

    之前没在测试环境发现这个问题,是因为测试环境数据库没有主从。想起当时刚接触Sharding JDBC写的Demo,于是整理一番,重新拉分支,并完善整个流程,模拟真实场景。

    (更多…)
  • Feign设置header无效

    把原生Http Connection改为使用Feign请求调用外部接口,在方法上添加注解:

    @PostMapping("{接口url}")
    @Headers({"Content-Type: application/json"})

    返回:

    看来用@Headers设置的Content-Type没有生效。@Headers是Feign自带的注册,而@PostMapping是Spring MVC的注解。在@PostMapping中也有header属性,于是改为:

    @PostMapping(value = "{接口url}", headers = {"Content-Type: application/json"})

    问题依旧。

    (更多…)
  • 再见Mybatis Generator,你好Mybatis Plus

    很久以前就使用Mybatis开发,Mybatis官方出品的Mybatis Generator能够自动生成Mapper和XML映射文件,提供基本的CRUD操作方法。

    Mybatis Generator生成Entity同时可以生成Example,做为条件对像查询,避免写SQL。Example会跟据字段生成and,or,like等方法,也有eq,lt,gt,le,lt等比较方法和order by排序。

    Mybatis Generator生成的SQL语句不提供数据库分页和排序,很多功能实现起来需要插件。我以前也写过分页插件,自定义封装了一个DaoService。在分页插件中增加了like查询,传入Entity跟据字段是否为空做条件用and查询。因为大多情况都是and查询,封装后很多操作不需要写SQL,也不需要用代码判断条件,提高了开发效率。

    最近的项目用上了Mybatis Plus,虽说是第一次用,但很多东西与Mybatis Generator相似。Mybatis plus作者说,只在Mybatis上做增强,不做修改。因为这点我很钟意这个框架。

    (更多…)