Spring 依赖注入

Spring 的特性:非侵入式控制反转依赖注入面向切面编程容器、组件化、一站式

在spring中对对象的实例化操作与以往的不同,需要在配置文件中进行配置,配合注入完成实例化对象。配置文件及applicationContext.xml和beans中的各种jar包路径。

新建class对象 cn.th.model.User2,属性:

private String name;

private Byte age;

private Car car;

生成setting,getting,toString等方法后进行实例化操作。

<bean id=username=“user01” class=cn.th.model.User2 /> // id ,name不能被重复 (在同一个配置文件中不能重复,不同配置文件中可以重复) 类User2被实例化,其属性没有赋值。

我们可以在其他类中,通过id、name获取这个类,如果没有声明id,name,则可以通过完整类名+#+在bean中同一类实例化中的序号 来获取想要的类。

属性赋值:

<bean id="personSpringEl" class="cn.th.model.User2">

<property name="name" value="#{personconstructorIndex.name}"/>

<property name="age" value="#{personconstructortype.age}"/>

<property name="car" value="#{personconstructorIndex2.car}"/>


</bean>

Spring El表达式 #{},可以通过id或name或 完整类名加序号 . 属性 获取属性值

不通过el表达式 的属性赋值:

<bean class="cn.th.model.User">
    <property name="name" value="谭辉"/>
</bean>

对于属性赋值有不同的几种方式,1.通过 Setting,类只能有一个无参构造器,spring会通过无参构造器实例化类,在通过setting对属性赋值,

  1. 通过  type ,spring依据有参构造器中参数的类型 对属性进行赋值,有歧义
  2. 通过  index ,spring依据有参构造器中参数的序号 对属性进行赋值,有歧义
  3. 通过 name ,spring依据有参构造器中参数的name 对属性进行赋值,有歧义

因为后三种有歧义,可以相互配合使用在bean中,以消除歧义

对特殊属性的注入,(array,list,set,map,properties)

<bean class=cn.th.model.User>

<property  name=array>

<array><value>1</value><value>2</value></array>

</property>

</bean>

<bean class=cn.th.model.User>

<property  name=list>

   <list ><value>1</value><value>2</value></list>

</property>

</bean>

<bean class=cn.th.model.User>

<property  name=set>

   <set ><value>1</value><value>2</value></set>

</property>

</bean>

<bean class=cn.th.model.User>

<property  name=map>

  <map ><entry key=1 value=2></entry></map>

</property>

</bean>

<bean class=cn.th.model.User>

<property name=properties>

   <porps><porp key=1>1</porp><porp key=2>2</porp></porps >

</property>

</bean>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值