Spring
文章平均质量分 61
系统的介绍 Spring 的知识点。
硕子鸽
这个作者很懒,什么都没留下…
展开
-
EasyExcel 自定义枚举类型装换
问题描述现在需要使用 EasyExcel 的报表导入导出功能,一般的字段都没有问题,但是由于系统使用了 Spring Boot + Mybatis Plus 的枚举类型映射功能,所以类似于 性别 的字段,在实体类中是下面的形式。@ExcelProperty(value = "性别(0:女,1:男)")private GenderType gender;其中的枚举类使用了 @EnumValue 注解,完成了自动映射,这使得在查询数据库的时候,我们和数据库交互的工具 Mybatis Plus 可以自动原创 2021-11-15 11:09:44 · 10150 阅读 · 2 评论 -
Spring 整合 Mybatis
一、MyBatis 单独开发第一个问题就是配置文件繁琐。如果使用 MyBatis 配置文件的方式开发,配置文件会非常的繁琐:<configuration> <typeAliases> <typeAlias type="edu.lsu.mybatis.User" alias="user"/> </typeAliases> <environments default="mysql"> <原创 2020-09-15 11:24:18 · 99 阅读 · 0 评论 -
如何理解面向切面编程中的切面?
在学习 Spring 中,有一个很重要的内容就是 AOP,面向切面编程。很多人疑惑为什么叫做面向切面?切面是什么意思,切入点是什么意思?下面我以一种通俗易懂的方式谈谈我的理解。切面与切入点切面 = 切入点 + 额外功能。我们先从几何的角度出发,我们都知道点构成面,任何一个面都是由很多个点构成的,比如桌面是由很多个木头点构成的,而这些木头点都有相同的特性:他们都是木头,如果我们想给这些木头点加一些额外的功能,让他们都变成红色的,只需要用红色的油漆将桌子刷成红色,相当于我们给桌子上的所有的.原创 2020-09-09 10:14:04 · 1788 阅读 · 0 评论 -
Spring 动态代理
一、静态代理静态代理要要实现相同的接口;要有原始对象;要有额外的功能。如下就是一个静态代理的实例。public class UserServiceProxy implements UserService { private UserServiceImpl userService = new UserServiceImpl(); @Override public void addUser() { userService.addUser();原创 2020-09-09 09:37:38 · 228 阅读 · 0 评论 -
Spring BeanPostProcessor 的执行顺序
首先 Spring 通过调用构造方法创建 User 对象;User 对象创建好之后,先不直接进行初始化操作,通过 BeanPostProcessor 对刚创建好的 User 对象进行加工操作,其中 postProcessBeforeInitialization 方法的第一个参数是 User 对象,第二个参数是在配置文件中指定的 id 值;加工好之后通过 return 将对象返回给 Spring 容器,然后 Spring 容器继续按照流程执行 初始化操作,先是 InitializingBean 的初始..原创 2020-09-08 16:25:09 · 2073 阅读 · 0 评论 -
Spring 自定义类型转换器
什么是自定义类型转换器来看下面一个例子:这里有一个实体类 Personpublic class Person { private String name; private Integer age; private Date date; ...}如果我们在配置文件中这么注入的话:<bean class="edu.lsu.pojo.Person" id="person"> <property name="name" value="原创 2020-09-08 13:09:44 · 643 阅读 · 0 评论 -
Spring工厂创建复杂对象
什么是复杂对象复杂对象是指无法使用 new 关键字直接创建的对象,比如在使用数据库连接的时候,我们需要用如下的方式创建对象:Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useSSL=false", "root", "root");再比如在使用 MyBatis 时原创 2020-09-07 20:54:32 · 211 阅读 · 0 评论 -
代理工厂的简单应用
一、简单工厂模式我们在 JavaWeb 中使用三层架构开发的时候往往有很多耦合的地方,比如下面这个场景。public class UserServiceImpl implements UserService { private UserDaoImpl userDao = new UserDaoImpl(); @Override public void addUser() { userDao.addUser(); } @Override原创 2020-09-06 08:47:34 · 277 阅读 · 0 评论 -
Spring MVC 整合 Servlet 3.0
根据 Servlet 3.0 的新特性,web 容器启动的时候会扫描每个 jar 包下的 /META-INF/services/javax.servlet.ServletContainerInitializer 文件。使用 Spring MVC 的 web 包,可以看到有这个文件:文件内容如下:org.springframework.web.SpringServletContainerInitializer该类的头部信息如下:@HandlesTypes(WebApplicationInitia原创 2020-07-27 17:54:31 · 402 阅读 · 0 评论 -
Spring 容器的创建过程
文章目录概览1、prepareRefresh1.1、initPropertySources1.2、validateRequiredProperties2、obtainFreshBeanFactory2.1、refreshBeanFactory2.2、getBeanFactory3、prepareBeanFactory4、postProcessBeanFactory5、invokeBeanFactoryPostProcessors5.0、invokeBeanFactoryPostProcessors6、reg原创 2020-07-25 17:26:38 · 480 阅读 · 0 评论 -
Spring 中的几个 PostProcessor 的区别与联系
首先明确 Bean 的生命周期:首先注册 Bean 的定义信息;然后创建 Bean 的实例;最后初始化 Bean ,放入容器中。按照执行的顺序,可以分为以下几个步骤:BeanDefinitionRegistryPostProcessor 是在注册 Bean 定义信息前后调用;BeanFactoryPostProcessor 是在创建 Bean 前后调用;BeanPostProcessor 是在初始化 Bean 前后调用;其中 BeanDefinitionRegistryPostProc原创 2020-07-22 23:05:09 · 780 阅读 · 0 评论 -
Spring 中基于注解的事务控制及原理分析
一、基本使用除了 Spring context 之外还需要导入以下几个包:<dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version></dependency><dependency> <groupId>org.原创 2020-07-22 21:14:17 · 286 阅读 · 0 评论 -
深入分析 Spring 基于注解的 AOP 实现原理
一、AOP 的基本使用AOP 的使用分为三步走:将业务逻辑组件和切面类都加入到容器中:告诉 Spring 哪个是切面类;@Aspect在切入类上的每一个通知方法上标注通知注解:告诉 Spring 何时何地运行(切入点表达式)@Pointcut、@Before~~~在配置类上开启基于注解的 AOP 模式;@EnableAspectJAutoProxy下面以一个计算器的例子来介绍 AOP 的基本使用:1、待增强类这是一个简单的计算器类,为了能够演示异常,所以创建了一个除法的方法。public原创 2020-07-22 15:20:56 · 1332 阅读 · 0 评论 -
Spring 中根据环境切换配置 @Profile
我们实际开发中往往有多个环境,比如测试环境、开发环境、生产环境等;不同的环境往往配置也有区别,一直切换环境的配置很麻烦,Spring 为我们提供了一个注解,可以快速切换环境配置。@Profile我们新建一个配置,作用是注册三个数据源,因为不同的环境使用的数据库一般不一样:@Configuration@PropertySource("classpath:/person.properties")public class MainConfigOfProfile implements Embedded.原创 2020-07-13 16:32:22 · 1282 阅读 · 0 评论 -
Spring 中实现自动注入的几种方式
Spring 中实现自动装配的注解有以下几个:@Autowired、@Qualifier、@Primary、@Resource、@Inject;@AutowiredSpring 中最常用的一个注解,当一个组件需要另一个组件作为属性的时候,我们可以通过两种方式对属性进行赋值,一种是通过构造方法,一种是通过 set 方法(类比),而这个注解使用的方法就是后者。下面介绍该注解的特点:首先是 按照类型 自动注入,适用于容器中只有一种该类型的组件;如果存在多个相同类型的组件,则将属性名作为 id 查原创 2020-07-13 13:51:26 · 4186 阅读 · 0 评论 -
Spring 中的属性赋值
一、配置文件中的配置如果使用配置文件的话,可以直接使用 value 属性指定值。<!-- 指定配置文件的位置 --><context:property-placeholder location="classpath:person.properties"/><bean class="top.wsuo.pojo.Person" id="person"> <property name="name" value="李四"/> <pr原创 2020-07-12 21:43:13 · 231 阅读 · 0 评论 -
Spring 中控制 Bean 生命周期的几种方式及 BeanPostProcessor 执行原理
一、几种方式总览@Bean 注解的方式;通过实现接口的方式;使用 JSR250 提供的两个注解;BeanPostProcessor 后置处理器;二、@Bean 的方式可以使用 @Bean 注解的两个属性设置初始化和销毁方法:@Bean(initMethod = "init", destroyMethod = "destroy")public Car car() { return new Car();}这里在实体类中创建了几个方法。public class Car {原创 2020-07-12 15:03:01 · 740 阅读 · 0 评论 -
Spring 中的 @Import 注解及向容器中添加 Bean 的几种方式
这次介绍一下 Spring 中的几个注解 @Conditional 以及 @Scope 和 @Lazy。本文的组织结构如下:先看一下该注解取代了配置文件中的哪些配置;再总览这些注解有哪些属性值;最后讲解一下重要的属性值。Spring 版本 5.1.2.RELEASE一、XML 配置二、属性总览三、重要属性讲解...原创 2020-07-12 11:26:24 · 1202 阅读 · 0 评论 -
Spring 注解开发之 @Conditional
这次介绍一下 Spring 中的几个注解 @Conditional 以及 @Scope 和 @Lazy。本文的组织结构如下:先看一下该注解取代了配置文件中的哪些配置;再总览这些注解有哪些属性值;最后讲解一下重要的属性值。Spring 版本 5.1.2.RELEASE一、XML 配置二、属性总览三、重要属性讲解...原创 2020-07-10 10:04:43 · 171 阅读 · 0 评论 -
Spring 注解开发之 @Bean 及其相关注解
这次介绍一下 Spring 中的几个注解 @Bean 以及 @Scope 和 @Lazy。本文的组织结构如下:先看一下该注解取代了配置文件中的哪些配置;再总览这些注解有哪些属性值;最后讲解一下重要的属性值。Spring 版本 5.1.2.RELEASE一、XML 配置在配置文件中,我们使用 bean 标签将组件放入容器中,使用它的 scope 指定作用范围,lazy-init 指定模式是懒加载;<bean class="top.wsuo.pojo.Person" id="per原创 2020-07-10 08:55:15 · 311 阅读 · 0 评论 -
Spring 注解开发之 @ComponentScan
这次介绍一下 Spring 中比较重要的一个注解 @ComponentScan。本文的组织结构如下:先看一下该注解取代了配置文件中的哪些配置;再总览该注解有哪些属性值;最后讲解一下重要的属性值。Spring 版本 5.1.2.RELEASE一、XML 配置@component 注解取代了配置文件中的如下配置:<context:component-scan base-package="top.wsuo"/>这一行配置的意思是开启包扫描,会自动扫描带有 @componen原创 2020-07-09 22:32:33 · 300 阅读 · 0 评论 -
从零开始重新认识 Spring Framework
如果你想快速入门 Spring 框架,或者想快速复习 Spring 的基本操作,那么这篇文章再适合你不过了。本文没有书上的啰里啰嗦,很言简意赅,但是需要读者有一定的基础,这里不会介绍一些常用的概念是啥,都是在实践中学习用法,所以没什么精华可言,只 停留在会用的层面,有些重要的会说一下原理。因为关于概念的讲解网上有太多太多了,这里我就不再 reinvent the wheel (造轮子)了,只说一下如何使用这些功能。IOC我们以一个实际的例子来看一下什么是 IOC,这里使用到了 Account 表原创 2020-05-31 18:31:20 · 370 阅读 · 0 评论