继配置过了Spring环境,我们来了解下依赖注入
一、关于依赖注入
1、即set注入:前提是实体类中必须存在set方法(即所谓的依赖,否则 报红,无法给属性赋值);
<bean id="user1" name="user2" class="cn.kgc.kb07.entity.User">
<property name="userName" value="王老七"/>
</bean>
注意值得注意的是:实体类的实现了带参方法后,无参构造不再默认提供,建议自行添加一个无参构造方法;
这种方法的优缺点:通过无参构造实例化,通过setter访问器实现,灵活性好,但setter方法数量较多,时效性差;
2、在Spring核心配置文件中 通过元素为构造方法传参;
//id 为唯一标识 不可重复 class 为类的路径
<bean id="user1" name="user2" class="cn.kgc.kb07.entity.User">
<constructor-arg name="uid" value="1"/>
<constructor-arg name="userName" value="张嘎"/>
<constructor-arg name="gender" value="男"/>
<constructor-arg name="say" value="三天不打小鬼子,手都痒痒!"/>
</bean>
(1)、一个元素表示构造方法的一个参数,且使用时不区分顺序。
(2)、通过元素的index 属性可以指定该参数的位置索引,位置从0 开始。
(3)、元素还提供了type 属性用来指定参数的类型,避免字符串和基本数据类型的混淆。
构造注入的优缺点:灵活性差,仅靠重载限制太多,时效性好,通过匹配的构造方法实例化,但建议保留无参构造。
3、其他注入(拓展注入),可以通过List ,Map,Arrays 等注入;
public class User {
private int uid;
private String userName;
private String gender;
// private String say;
private List<String> list;
private Map<Integer,String> map;
private Arrays arrays;
注意: 要对属性赋值 get set 方法是不可缺少的;
要在控制台输出User对象的具体信息toString方法是不可缺少的;
接下来就是对具体的属性进行赋值啦。
<bean id="user" class="cn.kgc.kb07.entity.User">
<!-- 对list赋值 -->
<property name="list">
<list>
<value>1</value>
<value>2</value>
<value>3</value>
<value>4</value>
</list>
</property>
<!--方法一-->
<bean id="user" class="cn.kgc.kb07.entity.User">
<property name="map">
<props>
<prop key="1">abc</prop>
</props>
</property>
</bean>
<!--方法二-->
<bean id="user" class="cn.kgc.kb07.entity.User">
<property name="map">
<map>
<!-- 键值对 key 为键 value 为值-->
<entry key="1" value="abc"/>
</map>
</property>
</bean>