未分类
2020-12-10 14:17:40
1822677238@qq.com
手机扫码查看
2020javaweb框架教程:spring的set依赖注入
set方式注入
value表示值类型的注入,ref表示对象类型的注入
创建两个对象,Users和Car
public class Users {
private int id;
private String name;
private double salary;
private Car car;
}
public class Car {
private String name;
private String color;
}
配置文件:
<!-- set方式注入 -->
<bean name="car" class="entity.Car">
<property name="name" value="Persoche" />
<property name="color" value="red"/>
</bean>
<bean name="users" class="entity.Users">
<property name="id" value="1" />
<property name="name" value="admin" />
<property name="salary" value="5000" />
<property name="car" ref="car" />
</bean>

测试工厂:
public void test(){
AbstractApplicationContext context;
context=new ClassPathXmlApplicationContext("applicationContext-inject.xml");
Users users = (Users) context.getBean("users");
System.out.println(users);
}

构造方法注入
创建类对象的有参构造方法
配置文件进行构造方法注入:
<!-- 构造方法注入 -->
<bean name="car2" class="entity.Car">
<property name="name" value="BMW" />
<property name="color" value="Black"/>
</bean>
<bean name="users" class="entity.Users">
<constructor-arg name="name" value="admin888"/>
<constructor-arg name="id" value="2"/>
<constructor-arg name="salary" value="5000"/>
<constructor-arg name="car" ref="car2"/>
</bean>

测试工厂

type类型注入
在类中添加构造方法:

在配置文件配置bean对象
<!-- type类型注入 -->
<bean name="users" class="entity.Users" >
<constructor-arg name="id" value="3" index="0" />
<constructor-arg name="name" value="988" index="1" type="java.lang.Integer"/>
</bean>

然后启动测试工厂

p名称空间注入
在bean配置文件顶部添加:
xmlns:p="http://www.springframework.org/schema/p"
然后在下面添加注入:
<!-- p 名称空间注入 --> <!-- p:属性名 表示值类型 --> <!-- p:属性名-ref 表示引用类型 --> <bean name="users" class="entity.Users" p:id="4" p:name="996"/>

然后启动测试工厂:

SPEL表达式注入
<!-- EL表达式 -->
<bean name="users" class="entity.Users">
<property name="id" value="5"/>
<property name="name" value="999"/>
</bean>
<bean name="users1" class="entity.Users">
<property name="id" value="#{users.id}"/>
<property name="name" value="#{users.name}"/>
</bean>


复杂类型注入
数组、List、Set、Map、Properties类型

数组
在一个类加入Object[] 数组,并添加getset方法以及toString方法
然后在配置文件添加:
<property name="obj">
<array>
<value>摩托车</value>
<value>拖拉机</value>
<value>兰博基尼</value>
<value>法拉利</value>
</array>
</property>

然后启动测试工厂:

List
<property name="list">
<list>
<value>admin</value>
<value>admin888</value>
<value>admin666</value>
</list>
</property>

Set
<property name="set">
<set>
<value>123</value>
<value>456</value>
<value>789</value>
</set>
</property>

Map集合
<property name="map">
<map>
<entry key="北京" value="010"/>
<entry key="上海" value="021"/>
</map>
</property>

properties注入
<property name="pro">
<props>
<prop key="username">admin</prop>
<prop key="password">admin888</prop>
</props>
</property>




发表回复