spring 的ioc的依赖注入(DI)-------------对象注入

35 篇文章 0 订阅
20 篇文章 1 订阅

一.依赖注入

依赖注入DI:它是spring框架核心ioc的具体实现。在编写程序时候,通过控制反转,把对象的创建交给spring容器中。ioc的解耦知识降低他们之间的依赖关系,但不会消除,如业务层调用持久层。

二.依赖的方式

2.1 通过set方法

1.set方法的注入:

首先,需要引入p命名空间: xmlns:p="http://www.springframework.org/schema/p"

其次,需要注入方式:

<bean id="userService" class="com.ljf.spring.demo.ioc.service.impl.UserServiceImpl">
    <property name="ud" ref="userDaoDemo"></property>
</bean>

2.dao层

package com.ljf.spring.demo.ioc.dao;

public interface UserDao {
    //添加数据
    public int addUser();
}
package com.ljf.spring.demo.ioc.dao.impl;

import com.ljf.spring.demo.ioc.dao.UserDao;

/**
 * @ClassName: UserDaoImpl
 * @Description: TODO
 * @Author: liujianfu
 * @Date: 2021/01/01 19:27:19 
 * @Version: V1.0
 **/
public class UserDaoImpl implements UserDao {
    public UserDaoImpl(){
        System.out.println("无参构造函数...");
    }
    public int addUser() {
        System.out.println("add user  success!!!!");
        return 0;
    }
}

3.service

package com.ljf.spring.demo.ioc.service;

public interface UserService {
    //添加数据
    public int addUser();
}

 

package com.ljf.spring.demo.ioc.service.impl;

import com.ljf.spring.demo.ioc.dao.UserDao;
import com.ljf.spring.demo.ioc.service.UserService;

/**
 * @ClassName: UserServiceImpl
 * @Description: TODO
 * @Author: liujianfu
 * @Date: 2021/01/03 11:19:57 
 * @Version: V1.0
 **/
public class UserServiceImpl implements UserService {
    private UserDao ud;

    public void setUd(UserDao ud) {
        this.ud = ud;
    }

    public int addUser() {
        return ud.addUser();
    }


}

引入命名空间:

配置bean标签调用:

 

4.调用

2.2 通过构造方法

1.dao层:

package com.ljf.spring.demo.ioc.dao;

public interface UserDao {
    //添加数据
    public int addUser();
}

 

package com.ljf.spring.demo.ioc.dao.impl;

import com.ljf.spring.demo.ioc.dao.UserDao;

/**
 * @ClassName: UserDaoImpl
 * @Description: TODO
 * @Author: liujianfu
 * @Date: 2021/01/01 19:27:19 
 * @Version: V1.0
 **/
public class UserDaoImpl implements UserDao {
    public UserDaoImpl(){
        System.out.println("无参构造函数...");
    }
    public int addUser() {
        System.out.println("add user  success!!!!");
        return 0;
    }
}

2.service层

package com.ljf.spring.demo.ioc.service;

public interface UserService {
    //添加数据
    public int addUser();
}
package com.ljf.spring.demo.ioc.service.impl;

import com.ljf.spring.demo.ioc.dao.UserDao;
import com.ljf.spring.demo.ioc.service.UserService;

/**
 * @ClassName: UserServiceImpl
 * @Description: TODO
 * @Author: liujianfu
 * @Date: 2021/01/03 11:19:57 
 * @Version: V1.0
 **/
public class UserServiceImpl implements UserService {
    private UserDao ud;
    //有参数构造函数
    public UserServiceImpl(UserDao ud) {
        this.ud = ud;
    }
    //无参构造函数
    public UserServiceImpl() {
    }

    /**
    public void setUd(UserDao ud) {
        this.ud = ud;
    }
     **/

    public int addUser() {
        return ud.addUser();
    }


}

3.配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--把对象的创建交给spring来管理-->
     <!--userDao的创建 ,这个bean的id可以任意起名, 默认使用构造函数实例化对象
    <bean id="userDaoDemo" class="com.ljf.spring.demo.ioc.dao.impl.UserDaoImpl" scope="singleton"></bean>
    -->
    <!--userDao的创建 ,这个bean的id可以任意起名,    静态工厂方式实例化化对象
    <bean id="userDaoDemo" class="com.ljf.spring.demo.ioc.config.StaticFactory" factory-method="getUserDao"></bean>
     -->
    <!--userDao的创建 ,这个bean的id可以任意起名,    动态工厂实例化对象-
    <bean id="factoryDemo" class="com.ljf.spring.demo.ioc.config.DynamicFactory" ></bean>
    <bean id="userDaoDemo"  factory-bean="factoryDemo" factory-method="getUserDao" ></bean>
    -->
    <!--userDao的创建 ,这个bean的id可以任userService意起名, 默认使用构造函数实例化对象
<bean id="userDaoDemo" class="com.ljf.spring.demo.ioc.dao.impl.UserDaoImpl" scope="singleton"></bean>
      使用set方法实例化方法
<bean id="userService" class="com.ljf.spring.demo.ioc.service.impl.UserServiceImpl">
    <property name="ud" ref="userDaoDemo"></property>
</bean>
    -->
    <bean id="userDaoDemo" class="com.ljf.spring.demo.ioc.dao.impl.UserDaoImpl" scope="singleton"></bean>
    <bean id="userService" class="com.ljf.spring.demo.ioc.service.impl.UserServiceImpl">
       <constructor-arg name="ud" ref="userDaoDemo"></constructor-arg>
    </bean>
</beans>

4.调用:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值