Spring基于三种依赖注入方式:
1.属性注入(Setter方法)
2.构造器注入
3.工厂方法注入(不常使用)
属性注入
bean id="helloWord" class="Service.HelloWord"> <property name="name" value="spring"></property> </bean>
构造方法注入
<!-- 通过构造方法来配置bean的属性 --> <bean id="car" class="Service.Car"> <constructor-arg value="Audi"></constructor-arg> <constructor-arg value="shanghai"></constructor-arg> <constructor-arg value="30000"></constructor-arg> </bean>
使用property的ref属性建立bean之间的引用关系
<bean id="person" class="Service.Person"> <property name="name" value="caiweiwei"></property> <property name="age" value="23"></property> <property name="car" ref="car2"></property> <!-- <property name="car"> <ref bean="car2" /> </property> --> <!-- 内部bean 不能被外部引用 只能被自己所访问 --> <!--<property name="car"> <bean class="Service.Car"> <constructor-arg value="qirui"></constructor-arg> <constructor-arg value="changan"></constructor-arg> <constructor-arg value="5000"></constructor-arg> </bean> </property> --> </bean>
使用list节点为List属性赋值
<bean id="persons" class="Service.PersonList"> <property name="name" value="liuxiaohui"></property> <property name="age" value="23"></property> <property name="cars"> <list> <ref bean="car" /> <ref bean="car2" /> <bean class="Service.Car"> <constructor-arg value="Audi"></constructor-arg> <constructor-arg value="shanghai"></constructor-arg> <constructor-arg value="30000"></constructor-arg> </bean> </list> </property> </bean>
解决map结点的赋值问题
<bean id="personmap" class="Service.PersonMap"> <property name="name" value="Bob"></property> <property name="age" value="28"></property> <property name="cars"> <map> <entry key="aa" value-ref="car"></entry> <entry key="bb" value-ref="car2"></entry> </map> </property> </bean>
解决properties问题
<bean id="datasource" class="Service.DataSource"> <property name="properties"> <props> <prop key="user">root</prop> <prop key="password">123456</prop> <prop key="jdbcurl">jdbc:mysql://test</prop> <prop key="driverClass">com.mysql.jdbc.Driver</prop> </props> </property> </bean>
通过p命名为bean的属性赋值,需要先导入p命名空间,相对于传统的方法更加简洁
<bean id="person5" class="Service.Person" p:nane="aaa" p:age="30" p:car-ref="car""> </bean>
id:唯一标识符,相当于在loc容器中的类名,在取得时候也是用这个id进行获取对象
注意的是class:bean的全类名,通过反射在IOC的容器中创建Bean,所以要求Bean必须有无参的构造方法.