前言 [第一次尝试去写一个系列,肯定会有想不到的地方,欢迎大家留言指正] 本系列将介绍如果从零构建一套分布式系统.同时也是对自己过去工作的一个梳理过程. 本文先整理出构建系统的主要技术选型,以及技术框架.其实在形成如下框架前,我参考了许多资料和结构,也结合中小型公司的时间以及人力等因素综合. 选型 分布式调用框架 可选的有  dubbox, SpringCloud dubboX:当当基于dubbo搞的,还在维护可以一用,推荐. SpringCloud:整合了大量组件,相关文档比较复杂,需要针对性…
前言 技术选型已经做完,那就来搭建框架了. 首先基于mvc思想,设计这套框架也是基于此,也会设计Dao层.Service层.Controller层.视图层等,同时也要考虑到dubbo的调用原理.   设计框架横向分层   调用关系图 web:为服务消费者,提供web页面,依赖middle.facade层,调用service层 api:同为服务消费者,只提供api接口,依赖middle.facade层,调用service层 middle:其实只是提取web.api层公共部分代码,依赖facade…
日志注解 前言 spring切面的编程,spring中事物处理.日志记录常常与pointcut相结合 * * Pointcut 是指那些方法需要被执行"AOP",是由"Pointcut Expression"来描述的. Pointcut可以有下列方式来定义或者通过&& || 和!的方式进行组合. * * Spring AOP支持的AspectJ切入点指示符如下: execution:用于匹配方法执行的连接点: within:用于匹配指定类型内的方法执…
前言 调试之前请先关闭Favicon配置 spring:     favicon:       enabled: false 不然会发现有2个请求(如果用nginx+ 浏览器调试的话) 序列化工具类[fastjson版本1.2.37] ```public class FastJson2JsonRedisSerializer implements RedisSerializer {     public static final Charset DEFAULT_CHARSET = Charset.…
0 引言 本文主要记录借用Idea 开发环境下,搭建 Spring Boot 项目框架的过程. 1 系列文档目录 Spring Boot 项目学习 (一) 项目搭建 Spring Boot 项目学习 (二) MySql + MyBatis 注解 + 分页控件 配置 Spring Boot 项目学习 (三) Spring Boot + Redis 搭建 Spring Boot 项目学习 (四) Spring Boot整合Swagger2自动生成API文档 2 第一个Spring boot web…
在前面的文章中(Spring Boot 2 实践记录之 Powermock 和 SpringBootTest)提到了使用 Powermock 结合 SpringBootTest.WebMvcTest 来 Mock Service.Controller 中的 静态类和静态方法. 但此法有两个弊端,一是这样的单元测试运行速度慢,二是时不时会出现测试运行停顿的情况. 一个可选的方案就是将这些用在 Service.Controller 中的静态类和静态方法的引用,封装在普通 Bean 中,Service…
在 Spring Boot 2 实践记录之 条件装配 一文中,曾经使用 Condition 类的 ConditionContext 参数获取了配置文件中的配置属性.但那是因为 Spring 提供了将上下文对象传递给 matches 方法的能力. 对于其它的类,想要获取配置属性,可以建立一个配置类,使用 ConfigurationProperties 注解,将配置属性匹配到该类的属性上.(当然,也可以使用不使用 ConfigurationProperties 注解,而使用 @Value注解) 如果…
按笔者 Spring Boot 2 实践记录之 MySQL + MyBatis 配置 中的方式,如果想正确运行,需要在 Mapper 类上添加 @Mapper 注解. 但是加入此注解之后,启动时会出现如下警告: Skipping MapperFactoryBean with name 'xxxMapper' and 'tk.mybatis.xxx.mapper.xxxMapper' mapperInterface. Bean already defined with the same name!…
目录 Spring MVC+Spring+Mybatis+MySQL(IDEA)入门框架搭建 0.项目准备 1.数据持久层Mybatis+MySQL 1.1 MySQL数据准备 1.2 Mybatis配置和使用 1.2.1 新建实体类和访问接口 1.2.2 配置MySQL连接信息 1.2.3 配置Mybatis信息 1.2.4 测试Mybatis访问Mysql的数据 2.Spring+Mybatis 2.1 Spring配置 2.2 测试 2.3 运行结果 3.加入Spring MVC处理请求…
综合概述 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型.接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录.MyBatis是一款半ORM框架,相对于Hibernate这样的完全ORM框架,MyBatis显得更加灵活,因为可以直接控制SQL语句,所…
spring boot是一个应用框架生成工具?…
前言 本篇随笔用于记录我在学习 Java 和构建 Spring Boot 项目过程中的一些思考,包含架构.组件和部署方式等.下文仅为概要,待闲时逐一整理为详细文档. 1. 组件 开源社区如火如荼,若在当下我们还要去重复 "造轮子" 那真是罪过罪过(当然也并不意味着所有的一切都可拿来即用,了解他,使用他,若有能力,去完善它).因此,当我们拿到需求的时候首先应当进行拆解,哪些模块在社区中已有比较成熟的解决方案,然后大致罗列一个粗略的所需组件列表(后续根据架构的设计和兼容情况再进行调整).…
最近一段时间一直在学习Spring Boot,刚进的一家公司也正好有用到这个技术.虽然一直在学习,但是还没有好好的总结,今天周末先简单总结一下基础知识,等有时间再慢慢学习总结吧. Spring Boot 概述 首先,Spring Boot是一个框架,主要理念就是消除项目中大量的配置文件,使项目更加短小精悍.我们知道 java 的开发显得很笨重:繁多的配置.开发效率低下.复杂的布署流程以及第三方技术集成难度大.所以说,spring boot就是在此环境下产生的. Spring Boot 的核心功能…
Jasypt安全框架提供了Spring的集成,主要是实现 PlaceholderConfigurerSupport类或者其子类. 在Sring 3.1之后,则推荐使用PropertySourcesPlaceholderConfigurer类作为属性替换配置类,这里Spring集成Jasypt则使用Jasypt对属性替换配置类的实现.EncryptablePropertySourcesPlaceholderConfigurer. 在Spring中集成比较容易,而且Jasypt官方也给出了配置Bea…
1. 利用spring boot提供的工具(http://start.spring.io/)自动生成一个标准的spring boot项目架构 2. 因为这里我们是搭建spring boot+mybatis+quartz架构,故在pom.xml文件中配置相关依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boo…
阅读前必看: ELK在docker下搭建步骤 spring boot集成es,CRUD操作完整版 ============================================== 本章集成ELK到spring boot,搭建日志系统 即,使用ELK对spring cloud分布式服务器集群日志做收集.汇总.分析.统计和检索操作. 那对于spring boot服务的日志 和 ELK的对接,就是通过Logstash来完成. 那spring boot的日志,如何能让logstash收集到呢…
先说 Redis 的配置,在一些网上资料中,Spring Boot 的 Redis 除了添加依赖外,还要使用 XML 或 Java 配置文件做些配置,不过经过实践并不需要. 先在 pom 文件中添加 redis 的依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> &…
1. Reactor简介 Reactor 是 Spring 社区发布的基于事件驱动的异步框架,不仅解耦了程序之间的强调用关系,而且有效提升了系统的多线程并发处理能力. 2. Spring Boot集成Reactor的pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=…
一.前言 1.开发工具及系统环境 IDE:IntelliJ IDEA 2020.2.2 系统环境:Windows 2.项目目录结构 biz层:业务逻辑层 dao层:数据持久层 web层:请求处理层 二.搭建步骤 1.创建父工程                        选择Spring Initializr,Initializr默认选择Default,点击Next         点击Next 这一步不需要选择直接Next 点击Finish创建项目 最终得到的项目目录结构如下,删除无用的.m…
一.Eclipse配置Spring Boot环境 1.查看eclipse版本信息: 2.登录:http://spring.io/tools/sts/all 看eclipse对应的插件版本对应的eclipse 信息 很显然我的eclipse版本太低,没有对应的spring boot tools版本,到eclipse官网下载新版本 二.安装spring boot tools 在eclipse中进行插件的安装 1:Help-->Install New Software-->work with 中输入…
由于要代码中使用了 Date 类生成实时时间,单元测试中需要 Mock Date 的构造方法,以预设其行为,这就要使用到 PowerMock 在 Spring Boot 的测试套件中,需要添加 @RunWith(SpringRunner.class) 和 @SpringBootTest 注解. 但是 PowerMock 需要添加 @RunWith(PowerMockRunner.class) 注解. @RunWith 注解只能有一个,解决方案是使用 @PowerMockRunnerDelegat…
第一步:新建项目 新建一个SpringBoot工程 修改项目信息 勾选项目依赖和工具 选择好项目的位置,点击[Finish] 第二步:项目结构分析 新建好项目之后的结构如下图所示,少了很多配置文件: 简单分析下都有啥玩意: SpringbootApplication: 一个带有 main() 方法的类,用于启动应用程序 SpringbootApplicationTests:一个空的 Junit 测试了,它加载了一个使用 Spring Boot 字典配置功能的 Spring 应用程序上下文 app…
一.Dubbo框架简介 1.框架依赖   图例说明: 1)图中小方块 Protocol, Cluster, Proxy, Service, Container, Registry, Monitor 代表层或模块,蓝色的表示与业务有交互,绿色的表示只对 Dubbo 内部交互. 2)图中背景方块 Consumer, Provider, Registry, Monitor 代表部署逻辑拓扑节点. 3)图中蓝色虚线为初始化时调用,红色虚线为运行时异步调用,红色实线为运行时同步调用. 4)图中只包含 RP…
本节内容介绍Nhibernate所封装的数据库訪问层.只是我增加了泛型进行封装.大概思路:首先,我们有一个接口层,另一个相应的实现层.在接口层中我们先定义一个父接口,父接口中定义每个接口都可能会用到的方法,然后其它接口继承此父接口即可.假设子接口须要使用特殊的方法,能够单独定义在子接口中:在接口实现层中也是类似的,定义一个父类,里面写好实现了接口层父接口的方法.其它实现层相同继承父接口和实现层父类,接口层中定义的特殊方法也在相应的实现类中进行实现.这样做能够有效的把相似的反复代码(反复的增删改查…
题记:在学习了springboot和thymeleaf之后,想完成一个项目练练手,于是使用springboot+mybatis和thymeleaf完成一个博客系统,在完成的过程中出现的一些问题,将这些问题记录下来,作为自己的学习心得.在这先感谢群主TyCoding的Tumo项目,虽然本人实在太菜了,好些地方看不懂,但还是使我受益匪浅. shiro作为一个小巧灵活的安全框架,在认证和授权方面简约但又不简单,十分容易上手使用.下面是整合shiro的具体流程. 1.添加依赖 <!--shiro和spr…
首先看一下项目结构: 所用到的jar(pom.xml): <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xs…
Spring 的组合注解功能,网上有很多文章介绍,不过都是介绍其使用方法,鲜有其原理解析. 组合注解并非 Java 的原生能力.就是说,想通过用「注解A」来注解「注解B」,再用「注解B」 来注解 C(类或方法),就能够使 C 同时拥有「注解A」和「注解B」是行不通的. 示例如下: 先定义注解 SuperAnno: import java.lang.annotation.*; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME)…
如果不需要连接池,那么只需要简单的在pom文件中,添加mysql依赖: <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>xxx.xxx.xxx</version> </dependency> 然后在配置文件中添加配置: spring.datasource.driver-cla…
前提 springboot默认自带json解析框架,默认使用jackson,如果使用fastjson,可以按照下列方式配置使用 1.引入fastjson依赖库: maven: <dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.46</version>…
依照搭建项目的顺序来比較好描写叙述一些,我一般先搭建实体层,本节内容纯属于NHibernate范畴.先上图和代码,然后对着图和代码逐一解说,以角色表为例:   T_Role表: 数据库表设计非常easy,ID为主键,而且是自增长的.其它字段还包含角色名称(Name).描写叙述(Content).排序(Sort).状态(Status).Del(是否删除).这里就不正确T_Role表赘述了.    T_Role类: using System; //Nhibernate Code Generation…