博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring的 Bean 注解和生命周期
阅读量:3740 次
发布时间:2019-05-22

本文共 1145 字,大约阅读时间需要 3 分钟。

Spring 的 bean 注解声明

使用 @Autowired 注解自动装配 bean,要想把类标识成可用于 @Autowired 注解自动装配的 bean 的类,采用以下注解可实现:

  • @Component :通用的注解,可标注任意类为 Spring 组件。如果一个 Bean 不知道属于哪个层,可以使用 @Component 注解标注。
  • @Repository : 对应持久层即 Dao 层,主要用于数据库相关操作。
  • @Service : 对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao 层。
  • @Controller : 对应 Spring MVC 控制层,主要用户接受用户请求并调用 Service 层返回数据给前端页面。

Spring 的 bean 生命周期

  • Bean 容器找到配置文件中 Spring Bean 的定义。
  • Bean 容器利用 Java Reflection API 创建一个 Bean 的实例。
  • 如果涉及到一些属性值 利用 set() 方法设置一些属性值。
  • 如果 Bean 实现了 BeanNameAware 接口,调用 setBeanName()方法,传入 Bean 的名字。
  • 如果 Bean 实现了 BeanClassLoaderAware 接口,调用 setBeanClassLoader() 方法,传入 ClassLoader 对象的实例。
  • 如果 Bean 实现了 BeanFactoryAware 接口,调用 setBeanClassLoader() 方法,传入 ClassLoader 对象的实例。
  • 与上面的类似,如果实现了其他 *.Aware 接口,就调用相应的方法。
  • 如果有和加载这个 Bean 的 Spring 容器相关的 BeanPostProcessor 对象,执行 postProcessBeforeInitialization() 方法
  • 如果 Bean 实现了 InitializingBean 接口,执行 afterPropertiesSet() 方法。
  • 如果 Bean 在配置文件中的定义包含 init-method 属性,执行指定的方法。
  • 如果有和加载这个 Bean 的 Spring 容器相关的 BeanPostProcessor 对象,执行postProcessAfterInitialization() 方法
  • 当要销毁 Bean 的时候,如果 Bean 实现了 DisposableBean 接口,执行 destroy() 方法。
  • 当要销毁 Bean 的时候,如果 Bean 在配置文件中的定义包含 destroy-method 属性,执行指定的方法。
9709135-39e4e068737efae0.jpg
Spring Bean 生命周期
9709135-ef6365ec9e247701.jpg
Spring Bean 生命周期

转载地址:http://onsin.baihongyu.com/

你可能感兴趣的文章
cc++ leetcode 最长连续递增序列
查看>>
c++ leetcode 三数之和
查看>>
cc++ LeetCode 爬楼梯
查看>>
cc++ 二分查找模板
查看>>
cc++ leetcode 二二交换链表节点
查看>>
c++ leetcode 24题两两交换链表节点8行代码非递归感受一下代码支配的恐怖吧!
查看>>
cc++ leetcode 判断链表是否有环 新思路翻转这个链表
查看>>
c/c++ leetcode 84.柱状图中最大的矩形
查看>>
cc++ leetcode N叉树的前后遍历
查看>>
cc++ leetcode 155.最小栈
查看>>
cc++ leetcode 二叉树和二叉搜索树的最近公共祖先
查看>>
cc++ leetcode 404.左节点之和
查看>>
cc++ leetcode 700.二叉搜索树中的搜索
查看>>
cc++ leetcode 257. 二叉树的所有路径
查看>>
cc++ leecode 783.二叉搜索树节点最小距离
查看>>
c/c++ leetcode 938. 二叉搜索树的范围和
查看>>
cc++ leetcode 538.把二叉搜索树转换为累加树
查看>>
cc++ leetcode 226. 翻转二叉树
查看>>
c++ Qt 元对象系统笔记
查看>>
cc++ leetcode 897. 递增顺序查找树
查看>>