Spring依赖注入的知识总结

一.set方法注入

1.直接写

public class UserServiceImpl implements UserService {
    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao; 
    }
    public void save() {
        userDao.save();
    } 
}

就是上面这种,在applicationContext.xml中也很容易

<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"/>
<bean id="userService" class="com.itheima.service.impl.UserServiceImpl"> 
    <property name="userDao" ref="userDao"/>
</bean>

但要注意,调用谁谁在property中,另外,name是上面UserDao的变量名。如果不是会一直爆红

2.利用p命名空间注入,代码与上面一样,xml配置如下

xmlns:p="http://www.springframework.org/schema/p"
<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"/>
<bean id="userService" class="com.itheima.service.impl.UserServiceImpl"
p:userDao-ref="userDao"/>

注意上面xmlns是写在<beans>里的

二.构造方法注入

public class UserServiceImpl implements UserService {
    private UserDao userDao;
    public UserServletImpl(UserDao userDao){
        this.userDao=userDao;
    }

    public UserServletImpl() {
    }
    public void save() {
        userDao.save();
    } 
}

只是将getUserDao的方法换成构造器,并且在xml中也有变化

<bean id="userDao" class="Day03.impl.UserDaoimpl"></bean>
    <bean id="userServlrt" class="Day03.impl.UserServletImpl">
        <constructor-arg name="userDao" ref="userDao"></constructor-arg>
    </bean>

注入的标签变成了constructor-arg,其他类似,但好像没有p命名空间的用法。

三.注入数据的三种类型

  • 普通数据类型
  • 引用数据类型
  • 集合数据类型

上面演示均为引用数据类型普通数据类型就相当于xml文件中赋值

public class UserDaoImpl implements UserDao {
    private String company;
    private int age;
    public void setCompany(String company) {
        this.company = company;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void save() {
        System.out.println(company+"==="+age);
        System.out.println("UserDao save method running....");
    }
}

 

<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"> 
    <property name="company" value="传智播客"></property> <property name="age" value="15</property>
</bean>

 引入集合类型需要将集合中的数据一一写下来,也相当于赋值操作,代码参考上面的xml文件

Map<String,User>:

<bean id="u1" class="com.itheima.domain.User"/>
<bean id="u2" class="com.itheima.domain.User"/>
<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"> 
    <property name="userMap"> 
        <map>
            <entry key="user1" value-ref="u1"/>
            <entry key="user2" value-ref="u2"/>
        </map>
    </property>
</bean>

List<String>:

<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"> 
    <property name="strList"> 
        <list>
            <value>aaa</value> 
            <value>bbb</value>
            <value>ccc</value>
        </list>
    </property>
</bean>

 List<User>

<bean id="u1" class="com.itheima.domain.User"/>
<bean id="u2" class="com.itheima.domain.User"/>
<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"> 
    <property name="userMap"> 
        <map>  
            <entry key="user1" value-ref="u1"/>
            <entry key="user2" value-ref="u2"/>
        </map>
    </property>
</bean>

 

 Properties:

<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"> 
    <property name="properties"> 
        <props>
            <prop key="p1">aaa</prop>
            <prop key="p2">bbb</prop> 
            <prop key="p3">ccc</prop>
        </props>
    </property>
</bean>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值