随笔分类 - spring
spring框架相关
摘要:前言 Spring对事务的支持依赖于SpringAOP的实现。 简单使用 create table test_db.tb_user( u_id int auto_increment primary key, -- 主键自增 u_name varchar(20) null, -- 用户名 u_age
阅读全文
摘要:前言 Spring从3.0开始支持JavaConfig配置,具体来说就是可以完全通过注解来开启Bean扫描,声明Bean,导入properties文件等。 主要有以下注解: @Configuration: 标识此Bean是一个配置类,接下来开始解析此类 @ComponentScan: 开启注解扫描,
阅读全文
摘要:前言 通过前面的博客我们已经对Spring的IOC容器有了一定的了解,它的底层实现为DefaultListableBeanFactory,这是一个BeanFactory, ApplicationContext在BeanFactory容器的基础上又增加了很多功能,如事件分发,国际化等。相关类图如下 可
阅读全文
摘要:前言 AOP(Aspect Oriented Programming)面向切面编程,通过在运行期对切入点(如指定类的指定方法)创建代理对象,来完成对业务功能的增强,适用于日志监听,事务处理等场景。SpringAOP是在IOC容器的基础上实现的。 AOP的各种概念 通知(Advice): 定义在连接点
阅读全文
摘要:前言 Spring提供了@Conditional注解在自动扫描Bean时可以根据条件来判断是否注册BeanDefinition。 简单使用 看一下@Conditional注解的声明,Spring4.0版本才提供。 @Target({ElementType.TYPE, ElementType.METH
阅读全文
摘要:前言 在项目中使用Spring,我们都会使用它的自动扫描Bean的功能,今天就来分析一下自动扫描的原理。 简单使用 import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.spri
阅读全文
摘要:前言 Spring提供了@Autowired注解让我们可以很方便的注入依赖的Bean,提供了@Value注解可以让我们从properties文件或yml文件中注入属性值。 @Autowired注解使用 import org.springframework.beans.factory.annotati
阅读全文
摘要:前言 循环引用又叫循环依赖,比如A依赖B,B又依赖A,Spring不支持构造器注入方式的循环依赖,支持属性注入的循环依赖。 这里关注的情况是Bean都是singleton(单例),对于prototype(原型)的情况,暂时不管。 构造器注入 这里为了分析原理,没有使用强大的ApplicationCo
阅读全文
摘要:前言 FactoryBean可以看做一个工厂Bean,它的getObject()方法可以生产另外一个Bean,且生产的Bean也由Spring管理。 简单使用 import lombok.Getter; import lombok.Setter; import org.springframework
阅读全文
摘要:前言 Spring中一个Bean的创建过程是十分复杂的,这里通过源码来简单分析一下。 原理分析 相关类图如下 DefaultListableBeanFactory就是IOC容器的最终实现,既实现了BeanFactory接口,也实现了BeanDefinitionRegistry接口, 所以它不仅是Be
阅读全文
摘要:前言 我们定义的所有Bean,不管是通过XML文件定义的,或者通过@Component注解定义的,或者通过@Bean注解定义的, 最后都会转换成一系列的BeanDefinition对象,保存到BeanDefinitionRegistry(注册表)中。 BeanDefinition和Bean实例的关系
阅读全文
摘要:前言 ConversionService表示类型转换服务,如将字符串转换为Long,字符串转换为日期等。在处理属性和创建Bean对象等很多场景都会使用到。 ConversionService 相关类图如下 默认实现为DefaultConversionService,默认增加了很多类型转换器,如字符串
阅读全文
摘要:前言 Environment表示当前Spring程序运行的环境,主要管理profiles和properties两种信息。 profiles用来区分当前是dev(开发)环境还是test(测试)环境或者prod(生产)环境。 properties表示所有的属性,包括操作系统环境变量,如PATH,JDK相
阅读全文
摘要:前言 Spring使用Resource接口来抽象所有使用的底层资源,对不同的来源有不同的实现,如Classpath资源(ClassPathResource),文件资源(FileSystemResource)等。 class文件、properties文件、yml文件都可以看做Resource。 Res
阅读全文
摘要:前言 WebSocket也是一种应用层协议,也是建立在TCP协议之上,类似HTTP,并且兼容HTTP。相比HTTP,它可以实现双向通信,如聊天室场景,使用HTTP就必须客户端轮训查询服务器有没有新的消息,而使用WebSocket就可以服务器直接通知客户端。 Tomcat支持 Tomcat自7.0.5
阅读全文
摘要:前言 i18n(其来源是英文单词 internationalization 的首末字符i和n,18为中间的字符数)是"国际化"的简称。对程序来说,可以在不修改内部代码的情况下,根据不同语言及地区显示不同的页面。 准备工作 IDEA中properties文件默认的编码为GBK,需要修改为UTF-8。
阅读全文
摘要:前言 在使用SpringBoot的项目中,我们需要配置spring-boot-maven-plugin插件 <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artif
阅读全文
摘要:前言 Spring Expression Language(简称 SpEL)是一个支持查询和操作运行时对象导航图功能的强大的表达式语言, 它的语法类似于传统 EL(如jsp中的EL表达式),但提供额外的功能,最出色的就是函数调用和简单字符串的模板函数。 SpEL 作为Spring框架的基础,但并不依
阅读全文
摘要:前言 今天在学习swagger源码时,发现其中使用到了spring-plugin组件,github地址, 这个组件很小众,在其他框架中也使用不多,它被称为最小的插件系统。 简单使用 maven依赖 <dependency> <groupId>org.springframework.plugin</g
阅读全文
摘要:前言 SpringBoot中的starter是一种重要的机制,遵循"约定优于配置"的理念,应用者只需要添加starter的maven依赖, SpringBoot就会自动扫描并加载相应的配置。为了更好的理解SpringBoot的原理,我们定义一个自己的starter。 自定义starter 命名规范
阅读全文