
Spring|Mvc|Boot|Cloud
文章平均质量分 56
Spring系列
诗人不写诗
当你足够努力时,全世界都会给你让路
展开
-
开发一个自己的SpringBoot组件
使用别人那么多组件,如果自己要开发一个组件该如何做?一、是否需要开关一个组件引入到系统中,如果没有开关配置,如果用户想关闭使用,就会需要排除jar包才行,修改风险很大。二、是否需要自动配置当前SpringBoot都是使用自动配置,你的组件很有可能需要有这种能力。三、组件是否有网络交互组件可以是本地作业处理,也可能是是有远程作业处理,也就是网络通信,这是2种不通的类型。...原创 2021-12-26 10:57:34 · 616 阅读 · 0 评论 -
SpringBoot数据源自动配置原理
本文基于SpringBoot2.2.8数据库相关的配置是一个项目最基本的配置,在使用SpringBoot自动配置数据库是什么原理?一、dorg.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration@Configuration(proxyBeanMethods = false)@ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class.原创 2021-08-09 22:39:45 · 597 阅读 · 0 评论 -
SpringBoot使用Redis缓存
本文基于SpringBoot2.2.8在SpringBooot中引入一个组件,往往只需要引入一个starter,他会帮你将所有相关依赖自动引入,大大简化了使用流程。一、使用步骤通过starter引入所有依赖,只需一个依赖即可完成所有相关依赖的引入:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-dat原创 2021-08-07 20:30:39 · 4518 阅读 · 0 评论 -
SpringBoot starter使用
本文基于SpringBoot2.2.8SpringBoot中引入一个新的组件很简单,往往只需要引入一个maven start坐标即可,不需要去自己手动引入关联引入的jar。通常,Spring官方提供的starter命名方式为:spring-boot-starter-xxx。官方建议自定义的start命名方式为:xxx-spring-boot-starter。一、SpringBoot starter原理SpringBoot使用starter的原理就是批量引入一批jar而已,starter本身的原创 2021-08-07 17:35:11 · 374 阅读 · 0 评论 -
spring security oauth2.0使用
Spring Security OAuth2.0是spring对OAuth规范的使用,这里直接写spring security oauth2.0的使用方式,我们知道,OAuth体系中存在的角色有4个,分别是:资源拥有者 Resource Owner资源服务器 Resource Server客户端应用 Client Application授权服务器 Authorization Server...原创 2021-07-13 20:22:50 · 224 阅读 · 0 评论 -
Spring ApplicationContext的设计哲学
ApplicationContext是Spring提供给用户使用Spring能力的途径,他是Spring能力的集大成者,有必要将他的结构掌握。原创 2021-06-12 10:09:39 · 122 阅读 · 0 评论 -
Spring Boot扫描bean之ConfigurationClassPostProcessor之ConfigurationClassUtils
本文基于Spring 5.2.7在ConfigurationClassPostProcessor的解析当中,有很多关于Configuration的方法,我们没有作过多解释,这里将他们的源码做个解释。org.springframework.context.annotation.ConfigurationClassUtils#checkConfigurationClassCandidate()上面一大半的代码都是在获取org.springframework.core.type.AnnotationMet原创 2021-06-17 08:46:43 · 553 阅读 · 0 评论 -
Servlet Filter使用的责任链模式
Servlet中的Filter使用到了责任链模式,Filter是提供给用户对请求做处理的,不同的组件可能有不同的处理,所以他们的处理逻辑不会耦合在一起,这样就需要一个方案将这些不同组件产生的分散且不确定的处理逻辑聚集起来,让他们得到执行,责任链模式就是一个优雅的解决方案,我们直接以Servlet中Filter的处理来做讲解,实战才是最好的讲解。一、Filter我们先来看看顶级接口设计javax.servlet.Filter 直接暴露给用户实现的,需要处理的用户只要实现Filter,并将Filter原创 2021-05-09 23:34:12 · 922 阅读 · 1 评论 -
动态代理基础
动态代理的作用主要是能不侵入修改目标类的情况下完成逻辑的变动,同时它能够运行时操作,这样一定程度上增加了生成代理的灵活性。在知道动态代理大概的实现方式后,会有一个很大的误区,我们知道JDK 动态代理是基于接口作实现,cglib是基于目标类作继承,他们2者都会产生一个新的代理类,同时也会有代理对象,但是千万别忘记,是先产生目标对象的,在调用处理器时,需要将代理对象传递进去,但是通过反射进行目标方法调用时,传递的是目标对象,代理对象传进去,没有使用,所以,这里不会产生多态的,因为是通过反射进行调用的。原创 2021-05-09 19:14:07 · 135 阅读 · 0 评论 -
FactoryBean和ObjectFacory的区别
对于这种区别,其实最好的答案是看他的使用上,因为有些东西的界限并不是预先设定好的,反而是他本身才是他的定义,我们先这两个接口的定义代码:org.springframework.beans.factory.FactoryBean这里有必要说明一下@FunctionalInterface的使用,@FunctionalInterface注解是jdk8才出现的,他的作用是编译期约束检查接口,该注解只能作用于interface,不能作用于其他类型,经此注解修饰的接口有且只能有一个抽象方法,可以有静态方法,也可以有原创 2021-05-01 20:34:07 · 260 阅读 · 0 评论 -
SpringBoot之Filter注册
SpringBoot中是可以自行注册Filter的,在SpringBoot中有几种注册Filter的方式。原创 2020-08-09 23:22:14 · 6067 阅读 · 1 评论 -
Spring Boot使用Mybatis|tk.mybatis
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.2</version></dependency><dependency> <groupId>tk.myb...原创 2020-07-05 19:01:50 · 585 阅读 · 0 评论 -
Spring Boot连接MySQL
连接数据库一定会使用连接池,Spring Boot目前使用较多的数据库连接池是Druid和HikariCP。1、Druidl连接池使用a、引入依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.22</version>&原创 2020-06-14 14:27:08 · 233 阅读 · 0 评论 -
Spring Boot使用Servlet Session和Spring Session
直接使用Tomcat Session可以满足用户访问量不大的情况,原创 2020-06-14 00:48:12 · 4454 阅读 · 0 评论 -
微服务网关
微服务的网关技术手段还是挺多的,使用zuul时我们需要将服务注册到中心,也可以使用另外的技术方案不用将网关服务注册到注册中心,原创 2019-02-24 19:58:50 · 127 阅读 · 0 评论 -
Spring Boot默认静态资源路径
classpath:/staticclasspath:/publicclasspath:/resourcesclasspath:/META-INF/resources优先级/META-INF/resources > resources > static > public原创 2019-09-15 13:19:42 · 198 阅读 · 0 评论 -
Spring Boot @Conditional系列注解
Spring Boot允许用户在加入Bean到IOC容器时做一些拦截操作,使用到的注解如下:@ConditionalOnBean // 仅仅在当前上下文中存在某个对象时@ConditionalOnClass // 某个class在claspath中@ConditionalOnExpression // 当表达式为true的时候@ConditionalOnMissingBean // 仅...原创 2019-02-19 18:22:13 · 891 阅读 · 0 评论 -
Spring Boot之@ConfigurationProperties和@EnableConfigurationProperties使用
Spring Boot的一大特点就是约定优于配置,所以直接导致很多配置直接缺省了,但是缺省不代表没有,只是他已经帮你配置了而已,所以在Spring Boot的开发中,我们会很容易的看到一些去xml化的一些操作,如下面要讲的@ConfigurationProperties的使用,他能轻易的将properties文件内容映射到Bean中,然后供程序使用,避免我们再手动的去写读取配置的代码,使代码更加简...原创 2019-02-19 18:07:20 · 1899 阅读 · 0 评论 -
SpringBoot启动方式
我们在做SpringBoot项目开发的时候,特别是微服务集群开发,本地是需要启动多个服务的,这个时候就有多种方式可以选择了,可以在终端上启动,也可以在IDEA等IDE中启动,这里说说使用的方式,在使用前先说个坑,在Win开发环境时,使用了Win的Powershell窗口使用mvn spring-boot:run -Dspring.profiles.active=peer的方式启动一个节点服务,始终...原创 2019-02-18 23:57:54 · 160 阅读 · 0 评论 -
SpringBoot过滤器使用|拦截器使用
SpringBoot使用过滤器的方式和传统xml配置方式不一样,传统方式是写一个继承Filter的自定义Filter,然后在web.xml中配置映射和类型信息,这样容器就能自动构建过滤流程了。SpringBoot没有使用xml配置的方式,过滤器的使用提供了两种方式,一种是注解,一种是构建FilterRegistrationBean方式。SpringBoot在配置上倾向于使用Java代码代替xml配...原创 2018-11-03 10:47:18 · 519 阅读 · 0 评论 -
Spring Cloud之spring-boot-starter
首先我们要知道,Spring Boot的一大特色就是全栈能力,全栈能力来自于集成所需的依赖和管理配置,Spring Boot追求的高度是配置优于编码,约定优于配置,最终表现就是很少的配置,Spring Boot虽然是全栈,但是还是将整个全栈生态划分为了若干模块,每个模块相对独立,是一批依赖的集合,他们的artifact id都是形如spring-boot-starter-xxx的样子,所以当你以使...原创 2018-09-23 00:54:04 · 1058 阅读 · 0 评论 -
Spring Boot之HttpMessageConverter消息格式
在web应用中,数据到应用是需要转换的,因为请求的数据可能是二进制,可能是字符串,可能是序列化的对象等,输出时也一样可能有多种数据格式,所以可以预见,会有多种数据转换器。事实上也是如此,Spring会维护一个List<HttpMessageConverter<?>> converters然后针对每个http请求协议中数据类型来选择合适的Converter来转换数据...原创 2019-09-03 01:10:46 · 231 阅读 · 0 评论 -
SpringBoot引入方式
方式1:继承spring-boot-starter-parent<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.7.RELE...原创 2018-10-12 12:22:36 · 656 阅读 · 0 评论 -
Spring Boot
Spring Boot最基本的能力就是一个全栈的Web开发框架,这里我们先来看看他作为Web框架是如何使用的,案例使用eclipse+maven项目来演示,最简单的pom.xml文件如下:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-insta...原创 2018-09-09 17:22:16 · 136 阅读 · 0 评论 -
Spring Boot Redis的正确使用步骤
springboot中使用redis先引入依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>需...原创 2019-09-01 01:04:00 · 286 阅读 · 0 评论 -
Spring FactoryBean的作用
在Spring中,一般情况下,配置的什么类型就会可以通过getBean()获取到相同类型的实例,对于一些复杂的bean,需要进行大量初始化工作的,我们就可以让这个bean实现FactoryBean<T>这个接口,public interface FactoryBean<T> { @Nullable T getObject() throws Exception;...原创 2018-07-18 21:43:40 · 1845 阅读 · 1 评论 -
Spring缓存使用
对于Java中Cache的使用,Java做出了规范,JSR107定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry和Expiry。CachingProvider定义了创建、配置、获取、管理和控制多个CacheManager。一个应用可以在运行期访问多个CachingProvider。CacheManager定义了创建、配置、获取、...原创 2019-08-31 01:21:12 · 265 阅读 · 0 评论 -
Spring的Environment使用
我们先来看看相关的类图:这里我们看源码提倡将相关的类图都整理出来,一来可以从整体上了解Spring的设计结构,二来可以学习代码设计架构,对自己设计项目架构能力有很大帮助,在这里通常暴露出来给编程人员的接口是Environment,但是我们可以看到具体功能的实现是分为两个大分支的,对外接口往往需要精简,内部实现则需要结构清晰。Environment相关使用分为两部分,一个是Propertie...原创 2018-09-02 22:14:51 · 16788 阅读 · 0 评论 -
Spring @Configuration和@Bean的使用
这两个注解的出现可以仅仅在代码中就将Bean加入到IOC容器中,Spring 3.0开始就支持了,之前我们将Bean加入到IOC容器中都是需要在配置文件里配置扫描路径的,使用这两个的组合就可以完全不使用xml配置,只是用代码就将Bean纳入Spring IOC容器的管理范畴了,使用方式如下:@Configurationpublic class HttpClientAutoConfigura...原创 2019-02-19 18:02:29 · 442 阅读 · 0 评论 -
Spring自动装配Map,List等集合@ConfigurationProperties
这个特性的其实还得归纳到@Autowired的特性上,或者说@Autowired包涵了一些我们不知道的能力。@Autowiredprivate Map<String, BaseValidateCodeGenerator> baseValidateCodeGenerators;在Spring中,写形式的代码,spring能自动装配值到map中,这种装配不是简单的给Map赋值,而是往...原创 2019-04-29 21:39:57 · 3339 阅读 · 0 评论 -
Spring使用声明式参数校验
使用步骤:Controller入参加上@ValidPOJO字段上加上目标注解@XXX@AssertFalse Boolean,boolean 验证注解的元素值是false@AssertTrue Boolean,boolean 验证注解的元素值是true@NotNull 任意类型 验证注解的元素值不是null@Null 任意类...原创 2019-07-27 14:45:17 · 245 阅读 · 0 评论 -
Spring Security 以及Spring Security OAuth2使用
OAuth是一个标准,用来保护数据提供者交互数据的安全,同时也涉及了数据读取者的访问方式。Spring Security OAuth同时提供了OAuth提供者和OAuth消费者2个实现,通常,你只会使用其中一个,极少数情况下你会同时使用这两个实现。胆小的人不适合在应用上使用安全措施,OAuth就是如此,因为这不是一件简单的事情。我们从实际使用出发,来归纳下目前web调用安全方面的策略:...原创 2019-09-10 00:14:29 · 656 阅读 · 0 评论 -
Spring @Import @Order的作用
SpringBoot 的 @Import 用于将指定的Configuration类实例注入之Spring IOC Container中Spring说,你不必将所有的@Configuration放到一个类里面,@Import注解可以用于导入其他的@Configuration类。或者,你使用@ComponentScan注解自动将所有组件包括@Configuration包含进来。@Order标记...原创 2019-09-13 23:54:31 · 874 阅读 · 0 评论 -
Spring AbstractRoutingDataSource使用
AbstractRoutingDataSource是一个动态的数据源,也就是说可以在多个数据源之间进行路由,首先要承认他就是一个数据源,这点可以从他的继承结构上看出:public class DynamicDataSource extends AbstractRoutingDataSource { @Override protected Object determineC...原创 2018-07-21 17:56:16 · 660 阅读 · 0 评论 -
Spring事务-Spring管理MyBatis事务
在原生MySQL命令中,或是在IBatis中,你可能会发现有startTransaction()之类的API提供出来给编程人员使用,而在MyBatis中,是没有这样的API的,MyBatis将这个操作集成到openSession()中了:public interface SqlSessionFactory { SqlSession openSession() SqlSession ope...原创 2018-07-31 11:31:28 · 838 阅读 · 1 评论 -
Spring中Resource和ResourceLoader
Spring对物理资源的访问方式抽象成Resource,我们可以通过Spring提供的接口来访问磁盘文件等数据,Spring力争提供一个统一的接口来给编程人员使用。下面我们来看看如何使用Resource接口:Resource r = new ClassPathResource("r.txt");File file = r.getFile();System.out.println(file...原创 2018-08-26 11:35:39 · 2984 阅读 · 0 评论