bean的详解
IOC操作bean管理
Spring创建对象,Spring注入属性
Bean管理操作两种方式
一.基于xml配置文件方式的实现
<bean id="user" class="<!--工程名-->"></bean>
1.在spring配置文件中,使用bean标签,标签里面添加对应的属性,就可以实现对象创建
2.常用属性:
id属性:唯一标识
class属性:类全路径
3.创建对象的时候,默认也是执行无参数构造方法完成对象的创建
4.基于xml的对象属性注入
set方法注入属性
有参数构造注入属性
xml注入其他类型的属性
外部注入
内部注入
注入数组类型属性
注入集合类型为引用对象的方法
Spring有两种类型的bean,一种是普通的bean,另一种是工厂bean
普通bean:在配置文件中定义bean类型就是返回类型
工厂bean:在配置文件定义bean类型可以和返回类型不一样
第一步:创建类,让这个类作为工厂bean,实现接口FactoryBean
第二步:实现接口里面的方法,在实现的方法中定义返回的bean类型
Bean的作用域
singleton:单例,指一个Bean容器中只存在一份
prototype:每次请求创建新的实例,destory方式不生效
request:每次http请求创建一个实例且仅在当前request内有效
session:同上,每次http请求创建,当前session内有效
global session: 基于portlet的web中有效(portlet定义了global session),如果是在web中,同session
bean生命周期
1.通过构造器创建bean实例
2.为bean的属性设置值和对其他bean引用
3.调用bean的初始化的方法(需要进行设置)
4.使用bean
5.让容器关闭的时候,调用bean 的销毁的方法(需要进行设置)
xml的自动装配
根据指定装配规则(属性名称或者属性类型),Spring自动将匹配的属性值进行注入
Bean的自动装配
NO:不做任何操作
byName:根据属性名自动装配,此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配
byType:如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配;如果存在多个该类型bean,那么就会抛出异常;如果没有找到相匹配的bean,则什么事都不会发生
Constructor:与byType方式类似,不同之处在于它应用于构造器参数。如果容器中没有找到与构造器参数类型一致的bean,那么抛出异常
二.基于注解方式实现
1.@Component
value值与class类名一致
2.@Service
3.@Controller
4.@Repository
5.@AutoWired:根据属性类型进行自动装配
第一步把service和dao对象创建,在service和dao类添加创建对象注解
第二步在service注入dao对象,在service类添加dao类型属性,在属性上面使用注解
6.@Qualifier 根据属性名称进行注入
7.@Resource可以根据类型注入,也可以根据名称注入
8.@Value注入普通类型属性
完全注解开发
1.创建配置类,添加注解@Configuration,代替xml配置文件,添加注解componentScan,扫描组件
2.加载配置类
开启组件扫描:
1.如果扫描多个包,多个包使用逗号隔开
2.扫描包上层目录
Aware
Spring中提供了一些以Aware结尾的接口,实现了Aware接口的bean在被初始化之后,可以获取相应资源
通过Aware接口,可以对Spring相应资源进行操作
为对Spring进行简单的扩展提供了方便的入口
Resources
针对资源文件的统一接口
UrlResource:URL对应的资源,根据一个URL地址即可构建
ClassPathResource:获取类路径下的资源文件
FileSystemResource:获取文件系统里面的资源
ServletContextResource:ServletContext封装的资源,用于访问ServletContext环境下的资源
InputStreamResource:针对于输入流封装的资源
ByteArrayResource:针对于字节数组封装的资源
龙力boy: 突出一个逻辑清晰,爱了
不会编程的派大星: 我男神浩
不会编程的派大星: 太强了 一定要带带我!
CHQIUU: 支持大佬,原创不易
John Zhuang: 希望有机会可以和你一起讨论学习!互关一波!