Spring中Bean的讲解
【摘要】
本文是Spring-Bean相关基础知识点,欢迎阅读,学习,一起进步。 初识Spring框架请参考:Spring框架基础 Spring-IOC框架请参考:IOC详解 Spring-AOP框架请参考:...
本文是Spring-Bean相关基础知识点,欢迎阅读,学习,一起进步。
初识Spring框架请参考:Spring框架基础
Spring-IOC框架请参考:IOC详解
Spring-AOP框架请参考:AOP详解
一.Bean的简介
- Spring 官方文档对 bean 的解释是:
In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans. A bean is an object that is instantiated, assembled, and otherwise managed by a Spring IoC container.
- 翻译出来
在 Spring 中,构成应用程序主干并由Spring IoC容器管理的对象称为bean。bean是一个由Spring IoC容器实例化、组装和管理的对象。
- Spring Bean是被实例的,组装的及被Spring 容器管理的Java对象。
- Spring 容器会自动完成@bean对象的实例化。
- 创建应用对象之间的协作关系的行为称为:装配(wiring),这就是依赖注入的本质。
- 小结:①bean是对象,一个或者多个不限定 ②bean由Spring中一个叫IoC的东西管理 ③我们的应用程序由一个个bean构成
二.Bean相关配置
- 如果我们要将类注册给Spring容器进行管理,则需要在applicationContext.xml中通过bean标签进行配置
属性 | 含义 |
---|---|
id/name | 用于指定当前bean的key(必须唯一) |
class | 用来指定类的路径 |
scope | 用于配置对象是否为单例"singleton |
autowire | 用于设置当前对象的自动装配 |
init-method | 用于指定初始化方法(此方法在Spring容器创建此Bean的对象时调用) |
destroy-mehtod | 用于指定bean对象销毁时调用的方法 |
lazy-init | 用于设置此bean为懒初始化 |
- 子标签:
property,用于属性注入配置
- name 指定属性名
- value 指定属性值(简单类型和字符串)
- ref 指定引用类型属性在spring容器中引用的bean的id
constructor-arg 用于构造器属性注入,指定构造器参数
- index 指定构造器参数索引
- value 指定构造器参数值
三.自动装配
- 在bean标签中添加autowire="byName"来让spring自动装配,默认不自动装配,还可以在beans标签中添加default-autowire="byName"表示配置文件中所有的bean都可以通过这种方式装配,bean中的default指的是和beans配置一致
<bean id="type" class="com.it.spring.beans.Type">
<property name="typeId" value="10002"/>
<property name="typeName" value="Language"/>
</bean>
<!‐‐
autowire : 设置对象属性自动装配
自动装配策略有两种(byName|byType)
‐ byName:在spring容器中找到于当前对象属性名相同的bean,注入到此对象的属性
‐ byType:在spring容器中找到类型与当前对象的属性类型相同的bean,注入到此对象的属性
‐‐>
<bean id="book" class="com.it.spring.beans.Book" autowire="byName"></bean>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
四.Bean的生命周期
- 我们将类交给Spring管理,Spring帮助我们完成对象的创建及属性的注入、并完成对象管理。
- 生命周期:Spring容器中对象的创建及销毁的过程。
- ①如果当前bean没有设置scope,或者设置scope="singleton"
- 在单例模式的情况下,当初始化spring容器加载applicationContext.xml时就会创建此
bean对象并存放在Spring容器中; - 当通过Spring容器获取此对象时,就直接从Spring容器中取出对象并返回
- ②如果当前bean设置scope="prototype"
- 在非单例模式的情况下,Spring容器在初始化时不会创建此bean的对象
- 当每次通过Spring容器获取此对象时,Spring容器都会重新创建此对象
- ③如果此bena通过lazy-init="true"设置此bean为“懒加载”,那么无论时bean是否为单例模式,Spring容器初始化时都不会创建此bean的对象。单例模式在第一次获取对象时创建此对象;非单例模式每次获取对象时都重新创建对象。
bean生命周期 ?
The best investment for young people is to invest in yourself
2020.03.27 来自辰兮的第38篇博客
文章来源: blessing.blog.csdn.net,作者:辰兮要努力,版权归原作者所有,如需转载,请联系作者。
原文链接:blessing.blog.csdn.net/article/details/105138641
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)