4.spring配置
4.1 别名
- 原来的名字可能为了规范会比较长,别名就可以简写
- 别名可以隐藏你Bean对象真实名,用户只需要输入别名即可。
<!--添加了别名可以用别名获取到-->
<alias name="hello" alias="helloXX"/>
4.2 Spring Bean配置
-
Spring IoC 容器管理的对象称为 Bean,Bean 根据 Spring 配置文件中的信息创建。
-
Spring 配置文件支持两种格式,即 XML 文件格式和 Properties 文件格式。
Properties 配置文件主要以 key-value 键值对的形式存在,只能赋值,不能进行其他操作,适用于简单的属性配置。
XML 配置文件采用树形结构,结构清晰,相较于 Properties 文件更加灵活。但是 XML 配置比较繁琐,适用于大型的复杂的项目。
- 在 XML 配置的 元素中可以包含多个属性或子元素,常用的属性或子元素如下表所示。
属性名称 | 描述 |
---|---|
id | Bean 的唯一标识符(也就是对象名),Spring IoC 容器对 Bean 的配置和管理都通过该属性完成。id 的值必须以字母开始,可以使用字母、数字、下划线等符号。 |
name | 该属性表示 Bean 的名称,我们可以通过 name 属性为同一个 Bean 同时指定多个名称,每个名称之间用逗号或分号(空格、)隔开。Spring 容器可以通过 name 属性配置和管理容器中的 Bean。相比于alias只能指定一个别名,这个更高级实用。 |
class | 该属性指定了 Bean 的具体实现类,它必须是一个完整的类名,即类的全限定名。–包名+类名 |
scope | 表示 Bean 的作用域,属性值可以为 singleton(单例)、prototype(原型)每次实例的时候新建一个、request、session 和 global Session。默认值是 singleton。 |
constructor-arg | 元素的子元素,我们可以通过该元素,将构造参数传入,以实现 Bean 的实例化。该元素的 index 属性指定构造参数的序号(从 0 开始),type 属性指定构造参数的类型。 |
property | 元素的子元素,用于调用 Bean 实例中的 setter 方法对属性进行赋值,从而完成属性的注入。该元素的 name 属性用于指定 Bean 实例中相应的属性名。 |
ref | 和 等元素的子元索,用于指定对某个 Bean 实例的引用,即 元素中的 id 或 name 属性。 |
value | 和 等元素的子元素,用于直接指定一个常量值。 |
list | 用于封装 List 或数组类型的属性注入。 |
set | 用于封装 Set 类型的属性注入。 |
map | 用于封装 Map 类型的属性注入。 |
entry | |
init-method | 容器加载 Bean 时调用该方法,类似于 Servlet 中的 init() 方法 |
destroy-method | 容器删除 Bean 时调用该方法,类似于 Servlet 中的 destroy() 方法。该方法只在 scope=singleton 时有效 |
lazy-init | 懒加载,值为 true,容器在首次请求时才会创建 Bean 实例;值为 false,容器在启动时创建 Bean 实例。该方法只在 scope=singleton 时有效 |
4.3 Import导入配置文件
-
Import用于团队开发,可以将多个配置文件,导入合并为一个
-
项目中多个人开发,三人复制不同的类开发,不同的类需要注册到不同的bean中,可以利用import将所有人的beans.xml合并为一个总的。使用的时候直接使用总配置。
<import resource="beans1.xml"/>
<import resource="beans.xml"/>
<bean id="hello" class="com.zk.pojo.Hello" scope="prototype">
<constructor-arg type="java.lang.String" value="名字"/>
<constructor-arg type="java.lang.String" value="密码"/>
</bean>
- 测试
@Test
public void TestDemo03(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Hello hello = applicationContext.getBean("hello", Hello.class);
System.out.println(hello.getMessage()+"//"+hello.getCall());
}
- 结果
com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit4 TestSpring,TestDemo03
名字//密码
Process finished with exit code 0
- 这个导入实际上是带路径的,同名文件路径一点不同
- 如果重名会按照引入的顺序,后一个覆盖前一个
本专栏下一篇:spring依赖注入
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123912.html