Spring框架学习之二(IOC机制)

SpringIOC的使用

IOC的概念

Inverse of Controller被称为控制反转或反向控制。(控制转移)所谓的控制指的是对象关系的指定,对象的创建、初始化和销毁等逻辑。IOC指的是将控制逻辑交给第三方框架或容器负责。当两个组件关系发生改变,只需要修改框架或容器配置即可。IOC主要解决的是两个组件对象调用问题,可以以低耦合方式建立使用关系。

DI的概念

Dependency Injection依赖注入。Spring框架采用的是DI技术实现了IOC控制思想。Spring提供了两种形式的注入方法。
- setter方式注入
依靠的set方法,将组件对象传入首先添加属性变量和setter方法之后再中定义部分采用下面描述方法

<property name = "属性名" ref = "要注入的对象id值">
<property/>
  • 构造方法注入
    依靠构造方法,将组件对象传入

案例

抽象接口
public interface CostDAO {
    public void save();
    public void delete();
}
实现类
jdbcCostDao实现
public class JdbcCostDAO implements CostDAO {
    public  JdbcCostDAO() {
        //单例模式的Bean组件是在容器实例化时创建,
        //prototype是在调用getBean()方法时调用
        System.out.println("--创建CostDAO对象--");
    }
    public void myinit() {
        System.out.println("--初始化DAO对象--");
    }
    public void mydestory() {
        System.out.println("--释放DAO资源--");
    }
    @Override
    public void save() {
        System.out.println("利用JDBC技术添加资费记录");
    }
    @Override
    public void delete() {
        System.out.println("利用JDBC技术删除资费记录");
    }

}
HibernateCostDao实现
public class HibernateCostDao implements CostDAO{
    public void delete(){
        System.out.println("删除操作");
    }
    public void save() {
        System.out.println("添加操作");
    }
}
applicationContext.xml中bean组件
jdbcCostDao
<bean id = "jdbcCostDAO" scope = "singleton" lazy-init = "true" 
   init-method = "myinit" destroy-method = "mydestory" class = "com.shagou.JdbcCostDAO"
   ></bean>
HibernateCostDao
<bean id = "HibernateCostDao" scope = "prototype" class = "com.shagou.HibernateCostDao"></bean>
Spring支持
<bean id = "CostAction" scope = "prototype" class = "com.shagou.CostAction.CostAction">
   <!-- 利用setCostDao方法接收CostDao对象 -->
   <property name = "costDao" ref = "HibernateCostDao"></property>
   </bean>
CostAction测试类
public class CostAction {
    //利用Spring的IOC机制使用JdbcCostDAO组件对象
    private CostDAO costDao;
    //set方式注入
    public void setCostDao(CostDAO costDao) {
        this.costDao = costDao;
    }

    public String execute(){
        System.out.println("处理资费添加操作");
        costDao.save();
        return "success";
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值