spring_bean&生命周期
1、bean与bean之间的关系
1.继承
a.在子bean中通过parent来指定父bean,实现继承关系.
b.在父bean中可以使用abstract=true,将父bean声明为抽象bean.
c.抽象bean不能实例化对象.可以省略class的配置.
d.子bean能从父bean继承相关的配置。但是autowire 以及abstract不能继承.
2.依赖
a.通过depends-on指定所依赖的bean,实现依赖关系
b.被依赖的bean会在当前bean之前创建.
c.依赖就是依赖,不会进行赋值.
2、bean的作用域
0.通过scope属性来指定bean的作用域.
1.singleton
单例的.在容器初始化的时候就会创建单例bean的实例对象,在容器整个生命周期期间,只会存在一个该bean的
对象.
2.prototype
原型的。在容器初始化的时候不会创建该bean的对象,而是在每次getBean的时候才创建对象.在整个容器
的生命周期期间理论上会存在多个该bean的对象.
3.request
在一次请求期间创建一个bean的实例对象
4.session
在一次回话期间创建一个bean的实例对象
3、引入外部化的属性文件
1.需要导入context命名空间
2.<context:property-placeholderlocation="classpath:db.properties"/>来引入外部化配置文件
3.使用${key}来获取配置文件中的值.
4、SPEL
语法:使用#{表达式}.
1.进行字面量的赋值
2.可以使用value来进行bean的引用
3.可以进行运算,判断
4.可以调用对象的方法 以及静态属性、静态方法
5.支持正则表达式的匹配运算
5、bean的生命周期
1.不使用bean的后置处理器,生命周期分为五个阶段
a.调用构造器创建bean的对象
b.给属性赋值(普通属性/字面值 引用属性/bean的引用)
c.调用初始化方法 在bean的配置中通过init-method来指定
d.使用bean
e.容器关闭的时候,调用销毁方法 在bean的配置中通过destroy-method来指定.
2.使用bean的后置处理器,分为七个阶段:
a.在1的基础上,在调用初始化方法的前后多出两个阶段.
b.bean的后置处理器: 实现BeanPostProcessor接口,实现两个抽象方法,在xml中配置.
6、bean的配置方式
1.全类名(反射)
2.工厂:
a.静态工厂
b.实例工厂
3.FactoryBean
a.实现FactoryBean接口,实现三个抽象方法
b.具体的对象是由getObject方法进行返回的.
7、基于注解配置
1.常用的注解
@Component
@Controller
@Service
@Repository
@Autowired
@Qualifier
2.开启注解扫描
<context:component-scanbase-package="包名"></context:component-scan>
<context:include-filter type="annotation/assignable" expression="注解的全类名/具体的类名"/>
需要与use-deafult-filters=false来一起使用
<context:exclude-filter type="annotation/assignable" expression="注解的全类名/具体的类名"/>
3.组件装配
@Autowired:
优先使用byType的方式匹配兼容的bean进行注入
如果有多个兼容的bean,则尝试使用byName的方式进行匹配
默认情况下,被@Autowired标注的属性必须要注入值.可以使用required=true/false来配置.
@Qualifier("id值"):具体指定要注入的bean
bean的生命周期:https://www.cnblogs.com/javazhiyin/p/10905294.html
本文来自博客园,作者:diligently,转载请注明原文链接:https://www.cnblogs.com/luo12828-foxmail/p/16964172.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)