传统的资源查找方式 要求组件向容器发起请求查找资源,做为回应,容器适时的返回资源。 应用了 IOC 以后,则是 容器主动的将资源推送给它所管理的组件,组件所要作的仅是选择一种合适的方式来接受资源。 这种行为也被称为查找的 被动形式
更为直接的:组件以一些预约好的方式(如:setter方法)来接受来自 容器的资源注入。
`配置 bean 全类名(反射)` bean.id : 标识做用,可自定义名字。经过 id 来应用bean bean.class : bean 的全类名,经过反射的方式 在ioc 容器中建立 bean 。因此要求 bean 中要有无参构造 property.name : bean setter方法名字(若是没有刻意更改就是属性名) property.value : 传输值:1) 能够用构造器 —— 不推荐,由于多参数的时候,须要顺序一直,一个错都错 2)set 方法。灵活自由,此时须要无参构造 <bean id="bean1" class="HelloWorld"> <property name="name" value="lsy"></property> </bean>
<constructor-arg>
<!-- 给级联属性赋值 注意:给级联属性赋值,须要有对应的getter方法 --> <bean id="carItem" class="ashley.spring.beans.CartItem"> <property name="book" ref="book"></property> <!-- 赋值 --> <property name="book.id" value="2"></property> <property name="book.name" value="Oracle"></property> <property name="count" value="30"></property> <property name="amount" value="10.2"></property> </bean>
可使用<list> <map> <set> 集合里也能够套嵌集合spring
<bean id="person" class="ashley.spring.beans.collections.Person"> <property name="name" value="小李"></property> <property name="age" value="100"></property> <property name="cars"> <list> <ref bean="car1"></ref> <ref bean="car2"></ref> <ref bean="car3"></ref> </list> </property> </bean>