Spring 使用XML管理对象的方式
XML文件配置
applicationContext.xml文件配置格式
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
使用xml文件去管理对象时,需要先在resources目录下创建applicationContext.xml文件
该文件。
applicationContext可以看作是Spring IOC的容器,而applicationContext.xml就是用于配置该容器的xml文件。
使用XML标签配置bean对象
< bean >标签:一个bean标签即代表一个被Spring管理的对象。
< bean >标签下的属性:
- id:给对象在容器中提供一个唯一标识,用于获取对象。
- name :指定生成的Bean实例名称,即就是给对象起别名。
- class:指定类的全限定名,用于反射创建对象,默认情况下调用无参构造函数。
- socpe:指定对象的作用范围。
- singleton:默认值,单例的(在整个容器中只有一个对象).
- prototype:多例的
- request:将Spring 创建的 Bean 对象存入到 request 域中.
- session:将Spring 创建的 Bean 对象存入到 session 域中.
- global session:WEB 项目中,应用在 Portlet 环境.如果没有 Portlet 环境那么globalSession 相当于 session。
- init-method:指定类中的初始化方法名称。
- destroy-method:指定类中销毁方法名称。比如DataSource的配置中一般需要指定destroy-method=“close”。
- lazy-init:ApplicationContext实现的默认行为就是在启动时将所有 singleton bean进行实例化。lazy-init可以延迟初始化,设置lazy-init="true"使得Ioc容器在第一次需要bean的时候进行实例化。
< bean >子标签属性:
- property:官方的话术是用来配置Bean实例的依赖关系(set方式注入,属性一定要有set方法),通俗讲就是配置对象属性的值
- constructor-arg 用来配置Bean实例的依赖关系(构造方式注入)
- ref:constructor-arg、property、list、set、entry等标记的子标记,指定一个Bean实例
- value:constructor-arg、property、list、set、entry等标记的子标记,指定一个常量
- list:用以封装List或数组类型属性的依赖注入 具体的元素通过ref或value子标记指定
- set:封装Set类型属性的依赖注入 具体的元素通过ref或value子标记指定
- map:封装Map类型属性的依赖注入 应为map是键值对,需要用entry子标签设置“键/值”对
name和id的区别:
Bean标签提供了两种标识Bean的Attribute:id和name
- id用来标识bean,是唯一的,且只有一个,只允许以字母开头,其后只能为字母或数字或”-“。
- name定义的是bean的alias,可以有多个,并可能与其他的bean重名,name允许特殊字符。
- 当多个重名的name同时存在时,先产生的bean会被后产生的bean覆盖
- 当id和name的值相同,通过值获取bean得到的是name对应的bean。