
Spring源码系列
学习一个东西,需要先去学会熟练使用他,然后再去看源码,可以事半功倍.
Demon-HY
生活不止眼前的苟且,还有明天...
展开
-
13-Spring自动装配-@Profile
@Profile@Profile 可以根据当前环境动态的选择是否启用当前配置文件,常用场景用来区分测试和线上环境.我们编写一个获取数据库实例的例子,看一下具体使用,先引入 Maven 依赖:<dependencies> <dependency> <groupId>org.springframework</groupId>...原创 2020-01-10 15:53:15 · 356 阅读 · 0 评论 -
12-Spring自动装配-方法、构造器装配,Aware注入Spring底层组件
构造器位置的自动装配@Autowired 注解支持添加到: 构造器、参数、方法、属性上.默认注入到 IOC 容器中的组件,容器启动会调用无参构造创建对象,再进行赋值操作,当我们注入对象时,可以写一个有参构造器,加上@Autowired,实现对象的自动注入./** * @author Demon-HY * @date 2019-12-12 */@Servicepublic class...原创 2020-01-08 18:39:57 · 225 阅读 · 0 评论 -
11-Spring自动装配-@Autowired&@Qualifier&@Primary&@Resource&@Inject
自动装配Spring 利用依赖注入(DI), 完成对 IOC 容器中组件的依赖关系赋值.当我们一个 bean 需要 引用另外一个 bean的时候,可以通过 @Autowired 来引用,引用的 bean 必须得是Spring容器中有的,否则启动会报错;引用方法如下:/** * @author Demon-HY * @date 2019-12-24 */public class Us...原创 2020-01-08 18:36:11 · 189 阅读 · 0 评论 -
10-Spring属性赋值-@Value
@Value 可以方便的获取配置文件中的属性@Value 的三种用法基本数值: @Value(“值”)SpEl 表达式: @Value("#{}")读取配置文件: @Value("${属性名:默认值[默认值可以省略]}")我们在项目的resources目录下新建一个application.properties文件,里面写入数据库的配置:mysql.url=jdbc:mysql://...原创 2020-01-08 18:32:56 · 260 阅读 · 0 评论 -
09-Spring生命周期-BeanPostProcessor后置处理器
BeanPostProcessor 后置处理器在 bean 初始化前后做处理,对 bean 初始化方法做了拦截,使用也很简单,新建一个组件实现 BeanPostProcessor 并加入到容器中.BeanPostProcessor 提供了两个方法,实现这两个方法即可:postProcessBeforeInitialization: 在初始化之前调用postProcessAfterInit...原创 2019-12-16 15:48:06 · 174 阅读 · 0 评论 -
08-Spring生命周期-@Bean指定初始化和销毁方法
bean 的生命周期创建 -> 初始化 -> 使用 -> 销毁我们可以自定义初始化和销毁方法,容器在bean进行到当前生命周期的时候会调用我们自定义的初始化和销毁方法;多实例 bean 容器不会管理初始化和销毁方法,需要自己调用自定义的初始化和销毁方法必须是无参方法通过调用 bean 定义的方法实现初始化和销毁package com.demon.bean;...原创 2019-12-16 15:46:43 · 157 阅读 · 0 评论 -
07-Spring组件注册-使用FactoryBean注册组件
使用FactoryBean注册组件需要实现FactoryBean接口,然后在Config配置类中通过@Bean注入直接看代码package com.demon.factory;import com.demon.bean.Color;import org.springframework.beans.factory.FactoryBean;/** * @author Demon-HY...原创 2019-12-10 23:57:33 · 209 阅读 · 0 评论 -
06-Spring组件注册-@Import 导入bean
@Import 可以快速的导入 bean 到 Spring 容器中这种方式注册的 bean 只支持无参构造,并且注册的bean的id默认是全类名,比如导入User.class,打印结果是: com.demon.bean.Userpackage com.demon.config;import com.demon.bean.User;import org.springframework.co...原创 2019-12-10 23:56:57 · 483 阅读 · 0 评论 -
05-Spring组件注册-@Conditional按照条件注册 bean
@Conditional 可以满足当某个条件为true时注册 bean@Conditional 源码@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Conditional { /** * All {@li...原创 2019-12-10 23:56:14 · 146 阅读 · 0 评论 -
04-Spring组件注册-@Lazy懒加载
通过 @Lazy 实现 bean 的延迟加载只支持单实例默认单实例是在项目启动时创建对象,通过@Lazy可以在bean第一次使用的时候创建对象编写配置类package com.demon.config;import com.demon.bean.User;import org.springframework.context.annotation.*;import org.spr...原创 2019-12-10 23:55:31 · 128 阅读 · 0 评论 -
03-Spring组件注册-@Scope设置组件作用域
@Scope设置组件作用域Spring 默认注册的 bean 都是单例模式的,如果需要设置其他模式,则使用@Scope注解,@Scopde一共有4种模式:singleton: 单例,整个容器中只会有一个实例prototype: 多实例,每次获取都会生成一个新的实例request: 一个http请求生成一个实例session: 一个会话生成一个实例单例模式Config2.java...原创 2019-12-10 23:55:01 · 168 阅读 · 0 评论 -
02-Spring组件注册-@ComponentScan
包扫描的方式如果没有设置包扫描路径,Spring 不会主动去注册 beanXML方式配置包扫描<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/...原创 2019-12-10 23:52:58 · 142 阅读 · 0 评论 -
01-Spring组件注册-@Configuration&@Bean
通过 @Configuration 注解将 bean 注册到 Spring 容器中XMl 方式注册 bean<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org...原创 2019-12-10 23:52:01 · 127 阅读 · 0 评论