Spring
weixin_43770982
这个作者很懒,什么都没留下…
展开
-
深度剖析Spring Cloud底层原理
毫无疑问,Spring Cloud 是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对 Spring Cloud 功能使用的层面,其底层的很多原理,很多人可能并不知晓。实际上,Spring Cloud 是一个全家桶式的技术栈,它包含了很多组件。本文先从最核心的几个组件,也就是 Eureka、Ribbon、Feign、Hystrix、Zuul 入手,来剖析其...原创 2019-04-11 11:21:49 · 158 阅读 · 0 评论 -
Spring核心——JSR250与资源控制
JSR-175与元编程要说明JSR-250先要解释清楚JSR-175,要解释清楚JSR就的先了解JCP是什么。网上资料很多,就不细说了,简单的说JCP(Java Community Process)是管理Java生态(包括J2SE、J2EE等等)发展的合作组织。JSR(Java Specification Request)就是组织内的成员针对Java的发展提出的一些需求,通过审核之后即会融入到...原创 2019-07-17 14:49:59 · 159 阅读 · 0 评论 -
Spring核心——Profile管理环境
抽象环境的概念在介绍Spring核心模块为运行环境管理提供的功能之前,咱们先得解释清楚“运行环境”是什么。码砖早年,对上下文(Context)、环境(Environment)一直都是傻傻分不清楚,感觉2者都是放了一堆参数在里面,貌似并没有多大区别。后来才慢慢摸清楚这2个词的套路。上下文(Context)是用来处理分层传递的,不清楚的可以看看上下文与IoC一文关于ApplicationCon...原创 2019-07-23 20:36:55 · 199 阅读 · 0 评论 -
Spring核心——注解自动装载
从配置上扩展之前的文章介绍了Spring的IoC容器配置管理方面的详细内容,需要了解的可以从IoC容器的设计模式开始阅读。在介绍基于注解配置的配置之前我们再重复一下在之前提到的基本认识:Spring的基本工作单位是Bean,所有的高级功能都是在Bean的基础上扩展而来的。Bean可以理解成Java类的一个实例。 Bean只是一个个体,Spring用一个名为IoC(Inversion of...原创 2019-07-16 16:50:34 · 269 阅读 · 0 评论 -
Spring核心——FactoryBean
本文继续之前的2篇文章(BeanPostProcessor和BeanFactoryPostProcessor)介绍Ioc容器的功能扩展。FactoryBean是用来构造Bean的接口。常规情况下向容器添加一个Bean只需要像下面这样通过XML的配置或注解直接引入这个类即可:<bean id="a" class="x.y.z.A"> <property name...原创 2019-07-11 20:02:21 · 87 阅读 · 0 评论 -
Spring核心——Bean的依赖注入
依赖注入在设计模式与IoC这篇文章中,介绍了Spring基础的三大支柱的两项内容——IoC、Bean。本篇将继续围绕着Bean的创建时的注入方式来介绍Spring的核心思想与设计模式。天底下所有面向对象的语言都不可能只用一个类来解决问题,即使是最简单的应用程序都存在类与类之间的依存关系。如下面这个人人都理解的组合例子:class Foo{ private Other other...原创 2019-07-06 17:14:43 · 125 阅读 · 0 评论 -
Spring核心——设计模式与IoC
“Spring”——每一个Javaer开发者都绕不开的字眼,从21世纪第一个十年国内异常活跃的SSH框架,到现在以Spring Boot作为入口粘合了各种应用。Spring现在已经完成了从web入口到微服务架构再到数据处理整个生态。一切都从IoC开始早期的Spring并没有这么多亮瞎眼的项目,仅仅是围绕着core、context、beans以及MVC提供了一个简单好用搭建网站级应用的工...原创 2019-07-06 15:08:45 · 164 阅读 · 0 评论 -
Spring 支持的事务隔离级别
并发事务所导致的问题:当同一个应用程序或者不同应用程序中的多个事务在同一个数据集上并发执行时, 可能会出现许多意外的问题并发事务所导致的问题可以分为下面三种类型:脏读: 对于两个事物 T1, T2, T1 读取了已经被 T2 更新但 还没有被提交的字段. 之后, 若 T2 回滚, T1读取的内容就是临时且无效的.不可重复读:对于两个事物 T1, T2, T1...原创 2019-07-01 11:51:50 · 337 阅读 · 0 评论 -
Spring核心——IOC功能扩展点
上一篇文章介绍了非侵入式的框架的概念以及IOC的功能扩展点之一——BeanPostProcessor,我们接下来的内容继续说明IoC更多的扩展方法。BeanFactoryPostProcessorBeanFactoryPostProcessor是针对整个容器的后置处理器。他的使用也非常简单,只要向容器中添加一个继承BeanFactoryPostProcessor的Bean即可。如何使用...原创 2019-07-10 16:56:45 · 138 阅读 · 0 评论 -
Spring核心——Stereotype组件与Bean扫描
在注解自动装载中介绍了通过注解(Annotation)自动向Bean中注入其他Bean的方法,本篇将介绍通过注解(Annotation)向容器添加Bean的方法。Spring的核心容器提供了@Component和@Bean注解来标记如何向IoC容器添加Bean。在核心包中@Component又派生了@Service、@Controller和@Repository这三个注解(在其他的Sprin...原创 2019-07-19 20:18:32 · 272 阅读 · 0 评论 -
Spring核心——资源管理
Resource——资源对于一个联机事务型系统(业务系统)来说,所依赖的外部运行信息主要有2个来源:数据项和资源项。数据项的存放位置通常是使用各种关系性或NoSql数据库,而资源项通常是使用文件、网络信息的方式来存储。早在JDK1.0的时代Java就已经提供了本地资源和网络资源的读取功能——java.net.URL。他可以同时管理本地资源(操作系统资源)以及网络资源,如下面这个例子:...原创 2019-07-29 17:12:27 · 165 阅读 · 0 评论 -
spring 注解方式配置Bean
Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件特定组件包括:@Component:基本注解,标示了一个受Spring管理的Bean组件@Respository:标识数据访问层(DAO层)组件@Service:标识服务层(业务层)组件@Controller:标识控制层(表现层),该类是能处理HTTP请求的控制器。对于扫描到的组件, Spring...原创 2019-08-05 18:01:27 · 147 阅读 · 0 评论 -
Spring核心——全局事件管理
ApplicationContext是一个Context策略(见上下文与IoC),他除了提供最基础的IoC容器功能,还提供了MessageSource实现的国际化、全局事件、资源层级管理等等功能。本文将详细介绍Spring核心模块的事件管理机制。Spring核心模块的事件机制和常规意义上的“事件”并没有太大区别(例如浏览器上的用户操作事件)都是通过订阅/发布模式实现的。Spring事件管理...原创 2019-07-27 14:34:27 · 188 阅读 · 0 评论 -
Spring核心——数据的类型转换
在字符串到实体转换一文中介绍了Spring核心框架中使用PropertyEditor将任何字符串转换为数字、实体的方法。除了字符串到实体,Spring还提供了更加通用的功能在对象和对象之间进行数据转换。Converter<S, T>Spring的类型转换的基础是Converter<S, T>(以下简称转换器)接口:package org.springframe...原创 2019-08-04 19:36:10 · 408 阅读 · 0 评论 -
Spring核心——MessageSource实现国际化
Spring的国际化在上下文与IoC对ApplicationContext以及Context相关的设计模式进行了介绍。ApplicationContext作为一个Context在应用的运行层提供了IoC容器、事件、国际化等功能接口。Spring的国际化(i18n)功能是通过MessageSource接口实现的,他提供了MessageSource::getMessage方法从预设的资源中获取...原创 2019-07-26 14:52:11 · 453 阅读 · 0 评论 -
Spring核心——@Configuration与混合使用
@Configuration在介绍Spring核心容器的系列文章中已经多次出现这个注解,从使用的角度来说可以把他理解为XML配置中的<beans>标签,但是两者肯定是不等价的。在<beans>标签中除了使用<bean>声名Bean以外,还有各种<context>标签来扩展功能,比如<context:component-scan/>...原创 2019-07-22 14:26:00 · 557 阅读 · 0 评论 -
Spring核心——资源数据管理
在Profile管理环境一文中介绍了环境的概念以及Spring Profile特性控制Bean的添加。本文将进一步介绍Spring管理和控制操作系统变量、JVM变量和Java标准资源(properties文件)的相关功能。PropertySource与优先级在整个Jvm运行期间,我们可以随时随地获取到2个与环境相关的参数:package chkui.springcore.exampl...原创 2019-07-25 16:42:41 · 118 阅读 · 0 评论 -
Spring核心——字符串到实体转换
笼统的说一个系统主要是由3个部分组成的:执行程序:主要负责处理业务逻辑,对接用户操作。 内部数据:嵌套在源码中的数据,用于指导程序运行。 外部数据:业务数据,外部配置数据。内部数据本身就是程序的一部分,在Java中这些数据通常停留在类的静态成员变量中。而外部数据往往与代码无关,所以对于程序而言要“读懂”它们需要进行一些前置处理。例如用户在前端页面提交的数据我们从RequestContex...原创 2019-08-02 19:31:11 · 590 阅读 · 0 评论 -
Spring核心——纯Java运行与@Bean
3.0新增容器启动方法在3.0之前的Spring核心框架中,我们启动一个Spring容器必须使用一个XML文件。而到了3.X之后的版本Spring为创建容器新增了一个入口类——AnnotationConfigApplicationContext。AnnotationConfigApplicationContext和过去的ClassPathXmlApplicationContext、File...原创 2019-07-20 17:00:21 · 122 阅读 · 0 评论 -
Spring核心——官配后置处理器
实际上Ioc容器中的大量功能都是通过后置处理器实现的,这里介绍几个主要的处理器。RequiredAnnotationBeanPostProcessorRequiredAnnotationBeanPostProcessor它用于处理@Required注解。当我们一个Setter方法加入@Required后,表示必须设置参数,如果未设置则抛出BeanInitializationExceptio...原创 2019-07-10 12:35:52 · 421 阅读 · 0 评论 -
Spring核心——官配BeanFactoryPostProcessor
在IoC功能扩展点这篇文章中介绍了BeanFactoryPostProcessor及其使用方法,本篇介绍Spring官方提供的典型BeanFactoryPostProcessor。占位符参数替换——PropertyPlaceholderConfigurer如果你的工程有很多配置内容放置到Java的标准配置文件*.properties中,当把Properties的内容整合到Spring中时就...原创 2019-07-13 19:07:47 · 143 阅读 · 0 评论 -
手写 Spring 事务、IOC、DI 和 MVC
Spring AOP 原理什么是 AOP?AOP 即面向切面编程,利用 AOP 可以对业务进行解耦,提高重用性,提高开发效率应用场景:日志记录,性能统计,安全控制,事务处理,异常处理AOP 底层实现原理是采用代理实现的Spring 事务基本特性:原子性 隔离性 一致性 持久性事务控制分类:编程式事务:手动控制事务操作声明式事务:通过 AOP 控制事务...原创 2019-05-05 19:15:05 · 1077 阅读 · 0 评论 -
Spring Boot 2.0 的快速入门(图文教程)
Spring Boot 2.0 的快速入门(图文教程)大家都知道,Spring Framework 是 Java/Spring 应用程序跨平台开发框架,也是 Java EE(Java Enterprise Edition) 轻量级框架,其 Spring 平台为 Java 开发者提供了全面的基础设施支持。 虽然 Spring 基础组件的代码是轻量级,但其配置依旧是重量级的。那是怎么解决了呢?...原创 2019-04-18 16:57:31 · 373 阅读 · 0 评论 -
Spring Boot 2.x :通过 spring-boot-starter-hbase 集成 HBase
本文内容HBase 简介和应用场景 spring-boot-starter-hbase 开源简介 集成 HBase 实战 小结一、HBase 简介和应用场景1.1 HBase 是什么?HBase 是什么?HBase 是在 Hadoop 分布式文件系统(简称:HDFS)之上的分布式面向列的数据库。而且是 2007 最初原型,历史悠久。那追根究底,Hadoop 是什么?Hado...原创 2019-04-18 14:58:30 · 1088 阅读 · 0 评论 -
spring事务传播行为之使用REQUIRES_NEW不回滚
最近写spring事务时用到REQUIRES_NEW遇到一些不回滚的问题,所以就记录一下。场景1:在一个服务层里面方法1和方法2都加上事务,其中方法二设置上propagation=Propagation.REQUIRES_NEW,方法1调用方法2并且在执行完方法2后抛出一个异常,如下代码 1 @Service 2 public class BookServiceImpl impleme...原创 2019-04-21 19:25:37 · 1115 阅读 · 0 评论 -
SpringBoot+Mybatis+ Druid+PageHelper 实现多数据源并分页
前言本篇文章主要讲述的是SpringBoot整合Mybatis、Druid和PageHelper并实现多数据源和分页。其中SpringBoot整合Mybatis这块,在之前的的一篇文章中已经讲述了,这里就不过多说明了。重点是讲述在多数据源下的如何配置使用Druid和PageHelper 。Druid介绍和使用在使用Druid之前,先来简单的了解下Druid。Druid是一个数据库...原创 2019-04-16 19:37:02 · 812 阅读 · 0 评论 -
SpringBoot基于AOP实现自定义非空验证的注解
为了避免对大量参数进行过多的非空校验,我们可以自定义一个非空验证的注解,因为spring自带的@RequestParam并不能对参数进行非空准备工作首先需要创建一个spring boot项目,并引入相关maven依赖,pom文件如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven...原创 2019-04-09 19:37:58 · 1102 阅读 · 0 评论 -
Spring MVC工作流程及简单搭建
首先客户端提交请求,请求包含URL以及可能的内容信息。这些将会被传递给DispatcherServlet。Spring MVC的所有请求都会通过DispatcherServlet。它将请求委托给应用程序的其他组件来执行实际的处理。 DispatcherServlet需要将请求发给控制器(Controller),DispatcherServlet通过URL来查询处理器映射(Handler M...原创 2019-04-08 16:49:12 · 90 阅读 · 0 评论 -
SpringBoot2.0.1与flowable工作流引擎整合
1.准备依赖,pom.xml文件如下<?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:sc...原创 2019-05-07 11:13:34 · 1815 阅读 · 0 评论 -
Spring Boot自动配置原理与实践
一、Spring Boot自动配置的原理介绍 主要从springboot是如何启动后自动检测自动配置与springboot如何灵活处理自动配置两个方面讲解,前者主要分析源码,从简单的注解入手到最后的读取spring.facoties文件。后者主要举例RedisAutoConfiguration自动配置来说明springboot对于相关的配置类bean的通过注解的灵活处理。1、...原创 2019-05-16 14:31:27 · 201 阅读 · 0 评论 -
面试官:Spring中用了哪些设计模式?
设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆。Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称行内典范。好了,话不多说,开始今天的内容。spring中常用的设计模式达到九种,我们举例说明。以后再也不怕面试官问我:Spring中用了哪些设计模式了。简单工厂模式又叫做静态工厂方法(Stat...原创 2019-07-13 15:14:39 · 116 阅读 · 0 评论 -
Spring核心——IOC处理器扩展
非侵入式框架Spring一直标注自己是一个非侵入式框架。非侵入式设计的概念并不新鲜,目标就是降低使用者和框架代码的耦合,毕竟框架的开发者和使用者几乎肯定不是同一个团队。Spring最早的非侵入式实现就是他的一系列XML配置,理想状态下Spring框架的所有的功能都应该是通过配置实现的。元编程在Java中的使用现给非侵入式的设计提供了更好的解决方案,在Java中通过注解(Annotation)即...原创 2019-07-09 15:19:36 · 112 阅读 · 0 评论 -
Spring核心——上下文与IoC
前面3篇分别介绍了IoC容器与Bean的关系、Bean与Bean之间的关系以及Bean自身的控制和管理。在了解Spinrg核心模式时,一定要谨记他的基本工作元素就是IoC容器和Bean,所有的功能是围绕着这2者展开的。要实现的内容无非就是通过设计模式来解决IoC与Bean的关系、Bean与Bean的关系、IoC与IoC的关系,以及对Ioc和Bean的控制。IoC控制入口看完整个Spring...原创 2019-07-09 12:07:54 · 191 阅读 · 0 评论 -
Spring核心——Bean的定义与控制
在前面两篇介绍Sring核心与设计模式的文章中,分别介绍了Ioc容器和Bean的依赖关系。如果阅读过前2文就会知道,Spring的整个运转机制就是围绕着IoC容器以及Bean展开的。IoC就是一个篮子,所有的Bean都向里面扔。除了提供篮子功能创建并存放Bean之外,IoC还要负责管理Bean与Bean之间的关系——依赖注入。之前也提到Bean是Spring核心容器的最小工作单元,Spring一些...原创 2019-07-08 15:20:08 · 118 阅读 · 0 评论 -
Spring中的统一异常处理方式
在具体的SSM项目开发中,由于Controller层为处于请求处理的最顶层,再往上就是框架代码的。因此,肯定需要在Controller捕获所有异常,并且做适当处理,返回给前端一个友好的错误码。不过,Controller一多,我们发现每个Controller里都有大量重复的、冗余的异常处理代码,很是啰嗦。能否将这些重复的部分抽取出来,这样保证Controller层更专注于业务逻辑的处理,...转载 2019-06-22 19:20:27 · 117 阅读 · 0 评论 -
Spring4 + Spring MVC + MyBatis 整合思路
1、Spring框架的搭建这个很简单,只需要web容器中注册org.springframework.web.context.ContextLoaderListener,并指定spring加载配置文件,那么spring容器搭建完成。(当然org.springframework的核心jar包需要引入)当然为了更加易用支持J2EE应用,一般我们还会加上如下:Spring监听HTTP请求事件:...原创 2019-06-11 16:53:50 · 134 阅读 · 0 评论 -
maven依赖的版本管理
使用变量进行管理定义一个版本号的变量<properties> <spring-framework-version>4.3.7.REALEASE</spring-framework-version></properties>所有spring的jar版本都使用变量来定义版本:<dependency> <gr...原创 2019-06-16 14:31:38 · 519 阅读 · 0 评论 -
如何使用Spring优雅地处理REST异常
1. 概览本文将举例说明如何使用Spring来实现REST API的异常处理。我们将同时考虑Spring 3.2和4.x推荐的解决方案,同时也会考虑以前的解决方案。在Spring 3.2之前,Spring MVC应用程序中处理异常的两种主要方式是:HandlerExceptionResolver或注解@ExceptionHandler。这两种方式都有明显的缺点。在3.2之后,我们有了新...原创 2019-06-12 14:43:05 · 184 阅读 · 0 评论 -
Spring核心——数据校验
在Java数据校验详解中详细介绍了Java数据校验相关的功能(简称Bean Validation,涵盖JSR-303、JSR-349、JSR-380),本文将在Bean Validation的基础上介绍Spring框架提供的数据校验功能。Spring提供的数据校验功能分为2个部分,一个是Spring自定义的数据校验功能(以下称为Spring Validation),一个是符合Bean Vali...原创 2019-08-01 20:20:43 · 296 阅读 · 0 评论