会在启动时,所有依赖都已经注入之后,会调用这个方法 (一般用于在你的业务逻辑执行前,Spring的依赖注入执行后,添加一段业务逻辑)
比如:你想在依赖注入后,你执行一个业务之前,还想调用某个方法或者进行某种运算以便你的业务使用,就可以使用这个注解
@PostConstruct void xxxx(){}@PreDestroy注解
在关闭时,在销毁Bean实例之前,会调用这个方法,例如关流或者在销毁前要关闭某些东西,在这里处理会比较方便(有助于释放资源和清理)
@PreDestroy void xxxx(){}@Stereotype注解
说明:
是 Spring框架的注解
@Service业务类
@Repository数据访问类
@Controller 和 @RestController 是 web类 (SpringMVC)
@Configuration java配置
而以上这5种注解,其实底层都是@Component注解 之所以一样的功能要叫不同的名字,就是为了方便分层
而这些注解,统称为 @Stereotype注解
@meta(自定义注解)使用@Target描述注解存在的位置 ElementType.TYPE 应用于类的元素 ElementType.METHOD 应用于方法级 ElementType.FIELD 应用于字段或属性(成员变量) ElementType.ANNOTATION_TYPE 应用于注解类型 ElementType.ConSTRUCTOR 应用于构造函数 ElementType.LOCAL_VARIABLE 应用于局部变量 ElementType.PACKAGE 应用于包声明 ElementType.PARAMETER 应用于方法的参数 使用@Retention注解描述这个自定义注解的生命周期(被保留的时间的长短) SOURCE 在源文件中有效(即源文件保留) CLASS 在class文件中有效(即class保留) RUNTIME 在运行时有效(即运行时保留)
注解补充
之所以有的注解,例如@Override重写注解,可以写可以不写,效果一样,但是有的注解必须写, 就因为这个meta
总结:
定义Spring Bean的方式:
显示的:使用@Bean方法
隐式的:使用@Component 和组件扫描 ( @componentScan("") )
大部分应用程序中使用 自己的写的类使用隐式的 其他的类使用显式的
进行初始化和清理
使用:@PostConstruct 和 @PreDestroy
@Autowired说明:
将使用IOC保存在容器中的Bean对象注入某个属性或者字段中
用法:
可以使用在构造方法上,并且有几个参数就可以注入几个参数,可以注入多个参数(推荐使用在构造方法上) 必须存在唯一的匹配类型的依赖
可以使用在方法上,
可以使用在字段上
注意:不能使用在类上!
自动装配/自动布线 也叫依赖注入 相当于别名
规则:
查找与所需类型匹配的唯一Bean
如果提供了@Qulifer则尝试根据名称查找匹配的Bean
关于@Resource注解和@Autowlierd是一样的@Autowlierd注解 是根据类型获取,再通过名称获取
@Resurce注解: 是根据名称获取,再通过类型获取
这俩没什么区别 非要有区别的话就是顺序不一样
关于FactoryBean(工厂模式)重要了解FactoryBean里的实现类getobject()理解get()方法如何工作
深入理解SpringBean生命周期1.初始化阶段:
当上下文被创建时,被初始化阶段就已经完成了
2.后处理Bean的定义"
1.BeanFactoryPostProcessor简称BFPP
2.看看有那些Bean可以加载 这个过程就叫 Bean的定义
3.加载多个Bean,跟定有先后顺序的 这个顺序就是由后处理来定义,也可以自定义但是要设置编码.比如Bean1,Bean2
实例化是构造注入 执行Setter是方法注入 Bean创建事件1.初始化器分为后初始化有分前初始化
例 前初始化<-------初始化------->后初始化
全称:BeanPostProcessor:简称BPP
以上就是SpringBean的生命周期初始化阶段 使用阶段代理:分两种
1.JDK代理 :是基于接口的 实现一个类
2.CGLib代理:是基于类 继承一个类
以上就是使用阶段销毁阶段
所有Bean被清理.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)