
Spring
colie_li
coding
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
认识Spring 的注解 (三)之 @AliasFor 使用规则
一、该标签存在的意义 顾名思义 @AliasFor 表示别名,它可以注解到自定义注解的两个属性上,表示这两个互为别名,也就是说这两个属性其实同一个含义。该标签存在的含义,从网上查发现有个点, 若 自定义注解有一个属性,且该属性命名上为了体现其含义,所以有些复杂,这样调用方必须每次使用自定义注解的时候,都必须写明 属性 ,然后设置,这样会比较负责; 同时若自定义注解继...转载 2020-02-26 01:50:13 · 752 阅读 · 0 评论 -
日志体系与SringBoot的日志应用
以后开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层里面的方法;日志实现意思为简单日志门面,它是把不同的日志系统的实现进行了具体的抽象化,只提供了统一的日志使用接口,使用时只需要按照其提供的接口方法进行调用即可,由于它只是一个接口,并不是一个具体的可以直接单独使用的日志框架,所以最终日志的格式、记录级别、输出方式等都要通过接口绑定的具体的日志系统来...原创 2019-12-08 00:47:40 · 237 阅读 · 0 评论 -
获取Dao上的自定义注解(了解Mybatis与Spring整合原理)
Dao类@Repository@Tag("user_tag")public interface UserDao {void save(User u)}需要是:将dao放入到一个本地Map中,key是Tag注解的内容,值是UserDao的Bean对象,在上层调用的时候直接Map.get("user_tage").save(u)即可实现1:实现接口BeanPostProce...原创 2019-11-12 23:13:26 · 912 阅读 · 0 评论 -
关于SpringBoot中基于条件的自动装配
springboot通过@EnableAutoConfiguration实现自动装配;可以将标注了@Configuration的配置类“一股脑的”的添加到ApplicationContext中;实际上基于@EnableAutoConfiguration的自动装配拥有更强大的功能;通过配合比如基于条件的配置能力或者调整加载顺序,我们可以对自动装配进行更加细粒度的控制1.基于条件的自动装配1.1在sp...转载 2018-07-14 23:38:48 · 792 阅读 · 0 评论 -
@ConfigurationProperties 注解
前言新的一年到了,在这里先祝大家新年快乐.我们在上一篇spring boot 源码解析12-servlet容器的建立 中 分析 ServerProperties时,发现其类上有@ConfigurationProperties 注解,加上该注解后,就会注入在application.properties中server开头的属性,那么它是怎么生效的呢?我们这篇文章就来分析一下.这篇文章内容比较长,大家慢...转载 2018-07-12 18:49:49 · 973 阅读 · 0 评论 -
spring boot 通过@Value,@ConfigurationProperties获取配置
spring boot 获取配置项值使用版本是1.5.4举例一个线程池的配置: 在application.yml添加配置项及值 # 线程池配置 taskexecutor: corePoolSize: 5 maxPoolSize: 10 queueCapacity: 2512345通过@Value 获取值@Configuration@EnableA...转载 2018-07-12 18:52:14 · 628 阅读 · 0 评论 -
可用来修改bean对象的BeanPostProcessor
11 可用来修改bean对象的BeanPostProcessor11.1 简介BeanPostProcessor是Spring中定义的一个接口,其与之前介绍的InitializingBean和DisposableBean接口类似,也是供Spring进行回调的。Spring将在初始化bean前后对BeanPostProcessor实现类进行回调,与InitializingBean和Disposabl...转载 2018-07-14 20:09:10 · 934 阅读 · 0 评论 -
一些常用的Spring Bean扩展接口
前言Spring是一款非常强大的框架,可以说是几乎所有的企业级Java项目使用了Spring,而Bean又是Spring框架的核心。Spring框架运用了非常多的设计模式,从整体上看,它的设计严格遵循了OCP----开闭原则,即:1、保证对修改关闭,即外部无法修改Spring整个运作的流程2、提供对扩展开放,即可以通过继承、实现Spring提供的众多抽象类与接口来改变类加载的行为开卷有益,阅读Sp...转载 2018-07-14 20:14:01 · 1126 阅读 · 0 评论 -
常用的扩展接口
Spring不仅提供了一个进行快速开发的基础框架,而且还提供了很多可扩展的接口,用于满足一些额外的开发需求,本篇将对常用的可扩展接口进行归纳总结1.InitializingBean接口InitializingBean接口中只有一个afterPropertiesSet方法,从方法的名称上很容易理解,这个方法是在Bean的属性都设置值后被调用,用于完成一些初始化工作。当然,在Spring的配置文件中i...转载 2018-07-14 20:20:06 · 611 阅读 · 0 评论 -
web应用自动装配Spring配置
在《深入理解Spring系列之一:开篇》的示例代码中使用如下方式去加载Spring的配置文件并初始化容器。 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");在web应用中,配置文件都是自动加载的,示例代码中的方式...转载 2018-07-14 20:22:37 · 298 阅读 · 0 评论 -
spring boot @ConfigurationProperties @EnableConfigurationProperties 配置注解使用
@ConfigurationProperties使用 application-dev.ymlmy: servers: port: 8080 threadPool: maxThreads: 100 minThreads: 8 idleTimeout: 60001234567@ConfigurationProperties 使用** * Cre...转载 2018-07-12 18:44:29 · 1568 阅读 · 0 评论 -
Spring中constructor,@PostConstruct,afterPropertiesSet,onApplicationEvent执行顺序
package com.xx; import javax.annotation.PostConstruct;import javax.annotation.Resource; import org.springframework.beans.factory.InitializingBean;import org.springframework.context.ApplicationLi...转载 2018-07-12 16:59:27 · 3286 阅读 · 1 评论 -
理解InitializingBean 和DisposableBean
首先需要明确InitializingBean和DisposableBean时对于单个bean来讲的(对应于实现该接口的bean),并不是全局的概念。若Abean实现了InitializingBean接口中的afterPropertiesSet方法,那么当A bean开始初始化的时候会先执行afterPropertiesSet方法。同样B bean实现了DisposableBean接口中的destr...原创 2018-07-12 16:55:01 · 651 阅读 · 0 评论 -
理解 Spring ApplicationListener
ApplicationContext事件机制是观察者设计模式的实现,通过ApplicationEvent类和ApplicationListener接口,可以实现ApplicationContext事件处理。 如果容器中有一个ApplicationListener Bean,每当ApplicationContext发布ApplicationEvent时,ApplicationListen...原创 2018-07-12 16:42:15 · 102980 阅读 · 10 评论 -
spring4.0之二:@Configuration的使用
从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。注意:@Configuration注解的...转载 2018-07-12 15:08:40 · 178 阅读 · 0 评论 -
Spring MVC执行流程
1、 用户发起请求,请求到DispatcherServlet前端控制器DispatcherServlet(中央调度),负责request和response,负责调用处理器映射器查找Handler,负责调用处理器适配器执行Handler,有了前端控制器降低了各各组件之间的耦合性,系统扩展性提高。2、 DispatcherServlet前端控制器请求处理器映射器HandlerMapping查找Hand...原创 2018-06-14 00:29:57 · 572 阅读 · 0 评论 -
Spring中去自定义注解
自定义注解:@Target({ ElementType.TYPE })//注解用在接口上@Retention(RetentionPolicy.RUNTIME)//VM将在运行期也保留注释,因此可以通过反射机制读取注解的信息@Componentpublic @interface testAnnon{ String value();}@testAnnon("HelloService")pu...原创 2018-05-20 01:33:05 · 238 阅读 · 0 评论 -
ApplicationContextAware及InitializingBean及bean注入执行顺序
1、 spring先检查注解注入的bean,并将它们实例化2、 然后spring初始化bean的顺序是按照xml中配置的顺序依次执行构造3、 如果某个类实现了ApplicationContextAware接口,会在类初始化完成后调用setApplicationContext()方法进行操作4、 如果某个类实现了InitializingBean接口,会在类初始化完成后,并在setApplicatio...原创 2018-05-20 01:30:25 · 13001 阅读 · 0 评论 -
squirrel-foundation状态机的使用细节
squirrel-foundation状态机的使用细节date: 2017-06-19 15:50:18上一篇文章介绍了stateless4j、spring-statemachine以及squirrel-foundation三款状态机引擎的实现原理,以及我为何选择squirrel-foundation作为解决方案。本文主要介绍一下项目中如何使用squirrel-foundation的一些细节以及如...转载 2018-04-20 15:22:13 · 1756 阅读 · 0 评论 -
自定义BeanDefinitionRegistryPostProcessor
24 自定义BeanDefinitionRegistryPostProcessorBeanDefinitionRegistryPostProcessor继承自BeanFactoryPostProcessor,是一种比较特殊的BeanFactoryPostProcessor。BeanDefinitionRegistryPostProcessor中定义的postProcessBeanDefinitio...转载 2018-07-14 20:52:19 · 7425 阅读 · 0 评论 -
BeanDefinitionRegistryPostProcessor接口动态注册bean
spring中BeanDefinitionRegistryPostProcessor接口的使用@Componentpublic class MyBeanFactoryPostProcessor2 implements BeanDefinitionRegistryPostProcessor{ @Override public void postProcessBeanFactory(Configura...转载 2018-07-14 21:00:36 · 1167 阅读 · 0 评论 -
EnvironmentPostProcessor动态配置文件
SpringBoot支持动态的读取文件,留下的扩展接口org.springframework.boot.env.EnvironmentPostProcessor。这个接口是spring包下的,使用这个进行配置文件的集中管理,而不需要每个项目都去配置配置文件。这种方法也是springboot框架留下的一个扩展(可以自己去扩展)demo在/Users/naeshihiroshi/study/study...转载 2018-07-14 21:23:23 · 2967 阅读 · 0 评论 -
EL表达式各种函数使用大全
引入<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>函数名 函数说明 使用举例 fn:contains 判断字符串是否包含另外一个字符串 <c:if test="${fn:contains(name, searchString)}"> fn:con...转载 2019-08-22 22:31:41 · 441 阅读 · 0 评论 -
Spring EL表达式详细讲解及使用实例
一、简介Spring3中引入了Spring表达式语言—SpringEL,SpEL是一种强大,简洁的装配Bean的方式,他可以通过运行期间执行的表达式将值装配到我们的属性或构造函数当中,更可以调用JDK中提供的静态常量,获取外部Properties文件中的的配置二、用法1、文本表达式文本表达式支持: 字符串(需要用单引号声明)、日期、数字、布尔类型及null,对数字支持负数、指数及小...转载 2019-08-22 22:30:59 · 8294 阅读 · 0 评论 -
EL判断语句的表达式
总结一下EL表达式的逻辑判断1:eq相等 ne、neq不相等;2:gt大于, lt小于;3:ge大于等于 le 小于等于4:not非mod求模 is [not] div by是否能被某数整除 is [not] even是否为偶数 is [not] even by $b即($a / $b) % 2 == 0...原创 2019-08-13 19:17:27 · 1900 阅读 · 1 评论 -
简单快速的用SpringBoot访问静态资源(图片、html)
使用SpringBoot简单快速的访问静态资源首先需要记载Springboot访问静态资源的Jar文件 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-th...转载 2019-06-27 20:21:46 · 24628 阅读 · 3 评论 -
Reactor 3快速上手——响应式Spring的道法术器
在1.3.2节简单介绍了不同类型的调度器Scheduler,以及如何使用publishOn和subscribeOn切换不同的线程执行环境。下边使用一个简单的例子再回忆一下: @Test public void testScheduling() { Flux.range(0, 10)// .log() // 1 ...转载 2019-06-11 20:46:14 · 1065 阅读 · 0 评论 -
Webflux核心
什么是WebFlux?Spring WebFlux 是一套全新的 Reactive Web 栈技术,实现完全非阻塞,支持 Reactive Streams 背压等特性,并且运行环境不限于 Servlet 容器(Tomcat、Jetty、Undertow),如 Netty 等。Spring WebFlux 与 Spring MVC 可共存,在 Spring Boot 中,Spring MVC 优先...转载 2019-06-10 18:14:01 · 11958 阅读 · 0 评论 -
@ResponseBody 和 @RequestBody 的作用
先提一嘴 @RequestMapping(“url”),这里的 url写的是请求路径的一部分,一般作用在 Controller的方法上,作为请求的映射地址。代码:@RequestMapping(value = "/test")//类级别映射,可以没有,一般用于减少书写量public class myController { //方法级别映射,必须有,那么这个方法的访问...转载 2019-06-10 00:06:30 · 468 阅读 · 0 评论 -
前端以form-data方式/raw方式发送post请求的区别
POST请求@RequestParam:① 用来处理(前端)Content-Type: 为 application/x-www-form-urlencoded或者form-data编码的内容② 该注解有两个属性: value、required; value用来指定要传入值的id名称,required用来指示参数是否必须绑定;注意这里Headers里不能以application/json作为C...转载 2019-06-10 00:02:52 · 30129 阅读 · 1 评论 -
Spring配置中的"classpath:"与"classpath*:"的区别研究(转)
概念解释及使用场景:classpath是指WEB-INF文件夹下的classes目录。通常我们一般使用这种写法实在web.xml中,比如spring加载bean的上下文时,如下:<!--系统自动加载文件--><!--这里使用的是classpath*:的形式--><context-param> <param-name>cont...转载 2019-06-08 18:05:58 · 135 阅读 · 0 评论 -
spring boot部署启动脚本
#功能:#1、指定用户运行——未实现#2、默认logs目录——可否另外指定?#3、JMX监控——待实现,需要启用第二参数来指定#4、设置JVM参数(指定程序运行名称、时区、内存大小、GC回收器设置、gc日志文件)#5、 指定配置文件的环境变量#6、start 启动时检查程序是否已经启动#7、stop 停止程序、stop之前会先dump。带完善:kill失败检查,然后用k...转载 2019-04-12 14:44:18 · 342 阅读 · 0 评论 -
Spring Retry重试机制
在调用第三方接口或者使用mq时,会出现网络抖动,连接超时等网络异常,所以需要重试。为了使处理更加健壮并且不太容易出现故障,后续的尝试操作,有时候会帮助失败的操作最后执行成功。例如,由于网络故障或数据库更新中的DeadLockLoserException导致Web服务或RMI服务的远程调用可能会在短暂等待后自行解决。 为了自动执行这些操作的重试,Spring Batch具有RetryOperatio...转载 2019-04-03 21:05:47 · 381 阅读 · 0 评论 -
SpringBoot如何集成Maven的profile功能
什么是profile开发项目的时候要有多个环境,如开发环境、测试环境、生产环境,他们的配置文件一般不同。当我们要向各个环境发布程序时,需要人工处理这些配置文件,这显然麻烦且易错。有了profile,一切问题就简单了。只要在maven打包时使用下面命令即可。 mvn clean package -Dmaven.test.skip=true -P prod-P prod 就是告诉mav...转载 2019-01-18 16:47:14 · 444 阅读 · 0 评论 -
FactoryBean 及InitializingBean 及DisposableBean执行顺序问题
FactoryBean:目的是通过调研getObject返回一个对象,交给spring来管理InitializingBean:在返回bean之前做的一些准备操作DisposableBean:实例结束之前做的收尾的工作。执行顺序: InitializingBean-->FactoryBean-->DisposableBean...原创 2018-08-12 19:37:24 · 1785 阅读 · 1 评论 -
扩展Spring的几种方式
1. 背景介绍Spring现在几乎已经成为了Java开发的必备框架,在享受Spring框架本身强大能力的同时,有时我们也会希望自己研发的组件和Spring进行整合,从而使得组件更易于上手,而且配合Spring使用能发挥更强大的作用。Apollo配置中心的Java客户端在前一段时间也提供了和Spring整合的功能,详细代码改动可以参考PR543。Apollo既支持传统的基于XML的配置,也支持目前比...转载 2018-07-15 01:21:11 · 1776 阅读 · 1 评论 -
ImportSelector
方法selectImports的返回值,必须是一个class(全称),该class会被spring容器所托管起来。假定有个类Teacher是外部的类,我们需要使用spring来管理。定义一个imporySelectpublic class TestImportSelect implements ImportSelector{ @Override public String[] se...转载 2018-07-15 01:14:10 · 1276 阅读 · 0 评论 -
spring中InitializingBean接口使用理解
InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候会执行该方法。测试程序如下:import org.springframework.beans.factory.InitializingBean;public class TestInitializingBean implemen...转载 2018-03-13 15:22:14 · 876 阅读 · 0 评论 -
ApplicationContextAware接口的作用
在Web应用中,Spring容器通常采用声明式方式配置产生:开发者只要在web.xml中配置一个Listener,该Listener将会负责初始化Spring容器,MVC框架可以直接调用Spring容器中的Bean,无需访问Spring容器本身。在这种情况下,容器中的Bean处于容器管理下,无需主动访问容器,只需接受容器的依赖注入即可。但在某些特殊的情况下,Bean需要实现某个功能,但该功能必转载 2018-01-30 15:40:47 · 1639 阅读 · 0 评论 -
getRequestDispatcher()与sendRedirect()的区别
1.request.getRequestDispatcher()是请求转发,前后页面共享一个request ;response.sendRedirect()是重新定向,前后页面不是一个request。request.getRequestDispather();返回的是一个RequestDispatcher对象。2.RequestDispatcher.forward()是在服务器端运转载 2015-11-03 20:06:23 · 340 阅读 · 0 评论