xml配置bean

bean管理

创建对象
注入属性

基于xml进行bean管理

创建对象
<bean id="任意" class="A的类路径"></bean>

id 获取对象唯一标识
class 类的全路径
name 跟id作用几乎一样 但id不可以加特殊符号name可以

创建对象是默认执行无参构造

注入属性: DI 依赖注入 di是ioc的一种具体实现

1 set注入
2有参构造注入

在spring配置文件中 配置属性注入(set注入)
<bean id="任意" class="A的类路径">
<property name="aage" value="18"></property>//name 对应类里的属性名 
</bean>
(有参构造注入)
<bean id="任意" class="A的类路径">
<constructor-arg name="aage" value="18"/>
<constructor-arg index="0" value="18"/> //有参构造的第一个参数
</bean>
p名称空间注入

xmlns:p=“…/p” xsi

<bean id="任意" class="A的类路径" p:aage="18">
</bean>

注入空值,属性值包含特殊符号

<property name="aage"> 
<null/>
</property>
//也可以转义
<property name="aage"> 
<value>
<![CDATA[内容]]>
</value>
</property>
外部bean

Adao AdaoImpl AService(含Adao及set方法)
service调用dao方法

<bean id="ADao" class="ADao对应实现类的类路径impl"></bean>

<bean id="AService" class="AService的类路径">
<property name="类里面的属性名称" ref="ADao"/>  
</bean>

aaaa=context.getbean()得到AService对象
aaaa.asd();  asd是AService内一个调用Adao方法的方法
内部bean
<bean id="AService" class="AService的类路径">
<property name="类里面的属性名称" >
<bean id="adao" class="ADao对应实现类的类路径impl">
<property name="Aage" value="18"/>
</bean>
</property>
</bean>
级联赋值

1方法

<bean id="ADao" class="ADao对应实现类的类路径impl">
<property name="aage" value="18"/>
</bean>

<bean id="AService" class="AService的类路径">
<property name="类里面的属性名称" ref="ADao"/>  
</bean>

2方法

<bean id="ADao" class="ADao对应实现类的类路径impl">
<property name="aage" value="18"/>
</bean>

<bean id="AService" class="AService的类路径">
<property name="类里面的属性名称" ref="ADao"/>  
<property name="A.aage" value="19"/>  
</bean>
xml注入集合属性
int b[];
//注入数组
<property name="b">
<array>
<value> 1 </value>
<value> 2 </value>
</array>
</property>
List<int> b;
//注入list
<property name="b">
<list>
<value> 1 </value>
<value> 2 </value>
</list>
</property>
Map<String,String> b;
//注入map
<property name="b">
<map>
<entry key="s" value="c" />
<entry key="d" value="e" />
</map>
</property>
Set<int> b;
//注入set
<property name="b">
<set>
<value> 1 </value>
<value> 2 </value>
</set>
</property>
List<Aobject> a;
<bean id="Aaobject" class="Aobject类路径">
<property name="a.age" value="18">
</bean>

<property name="b">
<list>
<ref="Aaobject">
</list>
</property>
//将Aaobject提取出来作为公共部分都能用
//util命名空间 xmlns:util="...." xsi

<util:list id="BList">
<value>18</value>
<value>19</value>
</util:list>

<bean id="b" class="..">
<property name="bage" ref="BList"/>
</bean>

工厂Bean

配置文件中定义的类型可以和返回值不一样
1创建类实现FactoryBean接口
2实现接口中的方法

class A implements FactoryBean<B>{
public B getObject()throws Exception{
return new B();
}
}

bean的作用域(单例/多实例)默认单例

bean属性scope,singleton 单例加载时创建,prototype多实例调用时创建
request,session这两个不常用放到不同区中

bean生命周期

1通过构造器创建bean对象(无参)
2设置bean中属性值(set)
2.5把bean实列传递给bean后置处理器的方法postProcessBeforeInitalization(实现BeanPostProcessor)
3调用bean的初始化方法(需要自己配置)bean里属性 init-method=“对应类里方法名”
3.5把bean实列传递给bean后置处理器的方法postProcessAfterInitalization
4得到了个可以使用的bean
5当容器关闭时销毁bean(需要自己配置)bean里属性 destroy-method=“对应类里方法名” (如果要手动销毁b.close 强转ClassPathXmlApplicationContext里的方法)

后置处理器单独类,单独bean配置会对当前配置文件中所有bean进行后置处理的操作

自动注入

bean属性 autowire=“byName” 根据名称自动注入(外部bean,id和我的类属性名要一样) autowire="byType"根据属性类型自动注入(要求每个类型只能有一个)

//省略了
<property name="" ref=""/>
外部属性文件
jdbc.properties
加context名称空间
<context:property-placeholder location="classpath:jdbc.properties"/>
value="${prop.url}"

基于注解进行bean管理

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值