文章目录 BeanWrapper PropertyEditor BeanWrapper 通常来说一个Bean包含一个默认的无参构造函数,和属性的get,set方法. org.springframework.beans 包里面有个很重要的类叫做BeanWrapper接口和他的实现BeanWrapperImpl,BeanWrapper提供了设置和获取属性值(单个或批量).获取属性描述符和查询属性的功能,以确定它们是可读的还是可写的. 此外,BeanWrapper还支持嵌套属性,允许将子属性的属性设置…
文章目录 为什么使用Spring5 什么是IOC容器 配置元数据 实例化容器 XML嵌套 groovy bean定义DSL 使用容器 最近在翻译Spring Framework Documentation 5.1.8.RELEASE. 觉得还是可以系统的将Spring5的知识点系统的再整理一下,于是有了这个Spring5参考指南系列,教程会一直更新,翻译也会同步进行,敬请期待. 为什么使用Spring5 Spring经过这么多年的发展,已经成为既定的企业级J2EE标准,其最大的优点即是轻量级和其…
文章目录 @Required @Autowired @primary @Qualifier 泛型 @Resource @PostConstruct和@PreDestroy Spring的容器配置可以有两种方式,一种基于XML文件, 一种基于注解.注解注入在XML注入之前执行.因此,当两个同时使用时,XML配置会覆盖注解注入的属性. 本文会主要介绍 @Required,@Autowired, @PostConstruct, @PreDestroy 和 @Resource 这几个注解. 这几个注解都…
文章目录 BeanPostProcessor自定义bean BeanFactoryPostProcessor自定义配置元数据 使用FactoryBean自定义实例化逻辑 Spring提供了一系列的接口来提供对Spring容器的扩展功能.下面我们一一介绍. BeanPostProcessor自定义bean 前面一篇文章我们在自定义bean中提到,可以实现Spring的InitializingBean和DisposableBean接口来实现自定义bean的生命周期.如果是容器级别的,Spring提供…
文章目录 Spring Bean 的生命周期回调 总结生命周期机制 startup和Shutdown回调 优雅的关闭Spring IoC容器 Spring Bean 的生命周期回调 Spring中的Bean是随着Spring容器产生的,当Spring容器关闭的时候,相应的Bean也会消失.当然这个和Bean自身的作用域范围也有关系,但是通常都逃不过 初始化,运行,关闭这三个状态. 在Spring中,我们通常需要在Bean刚刚初始化的时候,或者Bean被销毁的时候做一些额外的资源处理的事情.Spr…
文章目录 Bean作用域简介 Singleton作用域 Prototype作用域 Singleton Beans 中依赖 Prototype-bean web 作用域 Request scope Session Scope Application Scope 作用域Bean的依赖 自定义作用域 Bean作用域简介 Bean是Spring的根本,Spring本身就是一个一个的bean组成的,bean托管在Spring容器中,那么这些bean的作用域范围是怎么样的呢? 在Spring中,有六个作用域…
文章目录 依赖注入 依赖注入的配置详解 depends-on lazy-init 自动装载 方法注入 依赖注入 依赖注入就是在Spring创建Bean的时候,去实例化该Bean构造函数所需的参数,或者通过Setter方法去设置该Bean的属性. Spring的依赖注入有两种基于构造函数的依赖注入和基于setter的依赖注入. 基于构造函数的依赖注入 构造函数的注入是通过构造函数的参数来实现的.如下所示: public class ExampleBean { // Number of years…
文章目录 Spring容器中的Bean Bean的命名 Bean的实例化 Spring容器中的Bean Bean在Spring中就是一个业务组件,我们通过创建各种Bean来完成最终的业务逻辑功能. 在容器内部,每个bean的定义可以被表示为BeanDefinition,通过BeanDefinition可以获得bean的很多信息包括:包名,bean的作用域,生命周期,bean的引用和依赖等. 通过ApplicationContext的getBeanFactory()方法,能够获得DefaultLi…
文章目录 遇到的问题 @Configurable 原理 重要配置 遇到的问题 前面的文章我们讲到了在Spring中使用Aspect.但是Aspect的都是Spring管理的Bean. 现在有一个问题,实际工作中,我们经常会想new一个Bean,然后在这个Bean中注入Spring管理的其他Bean.但是new出来的bean已经脱离Spring的管控了. 该怎么处理呢? @Configurable Spring提供了一个@Configurable的注解,可以实现这个功能,我们看一个例子: @Con…
文章目录 AOP代理 AOP Proxies原理 AOP代理 通常来说Spring AOP有两种代理方式,一种默认的JDK代理,只能代理接口,一种是CGLIB代理,可以代理具体的类对象. SpringAOP默认为对AOP代理使用标准的JDK动态代理.如果业务对象不实现接口,则使用CGLIB. 如果使用CGLIB,要注意对于CGLIB,不能advice final方法,因为它们不能在运行时生成的子类中被重写. 由于Spring的AOP框架基于代理的特性,根据定义,目标对象内的方法调用不会被拦截.对…