Spring框架(IOC和DI)

文章介绍了Spring框架中的IOC(控制反转)和DI(依赖注入)概念,通过一个案例展示了如何在服务、数据访问对象层以及Servlet中应用这些概念。在案例中,Spring容器管理Bean,包括创建、配置及注入依赖,实现了对象间的解耦。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,Spring IOC和DI的概述

1.Spring是一个容器,可以接管各个层次的Bean(action/domain/pojo/javabean),并且可以配置bean与bean之间的关系。在java代码里使用bean只需要  用ApplicationContext 的getBean(配置文件里bean的id)方法就可以了。

2..IOC(Inverse of Control)即控制反转,它将对象的创建和依赖注入的过程由程序员手动控制转化为由容器自动创建和注入。

3.DI(Dependency Injection)即依赖注入,它是IOC的一种实现方式,通过容器自动将所需的依赖注入到需要它们的对象中,从而实现对象之间的解耦。

二,案例。创建项目的包名,类名,调用的jar包如下:

 二,类中的代码

dao层

//接口
package com.wang.dao;

public interface BookDao {
    public void sace();
}
//实现类
package com.wang.dao.impl;

import com.wang.dao.BookDao;

public class BookDaoimpl implements BookDao {

    @Override
    public void sace() {
        System.out.println("BookDaoimpl...sace");
    }
}

service层

//接口
package com.wang.service;

public interface BookService {
    void insert();
}

//实现类
package com.wang.service.impl;
import com.wang.dao.BookDao;
import com.wang.service.BookService;

public class BookServiceImpl implements BookService {
    public String name;
    private BookDao bookDao;

    public void setName(String name) {
        this.name = name;
    }
    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }
    @Override
    public void insert() {
        System.out.println("BookServiceImpl...insert");
        bookDao.sace();
    }
}

servlet层

package com.wang.servlet;

import com.wang.service.BookService;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class BookServlet {
    BookService bookService;
    @Test
    public void add(){
        System.out.println("BookServlet...add");
        //1.获得IOC容器
        ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("spring.xml");
        //2.根据名字从容器中获取对象
        bookService = (BookService) context.getBean("bookService");
        bookService.insert();
    }
}

spring.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--把所有对象创建到spring的IOC容器中,并起上名字
    id:表示给对象起名字
    class:类的全类名-->
    <bean id="bookDao" class="com.wang.dao.impl.BookDaoimpl"></bean>
    <bean id="bookService" class="com.wang.service.impl.BookServiceImpl">
        <!--spring的依赖注入:property表示BookSServiceImpl的属性,常规属性使用value赋值,类型属性使用ref引用-->
        <property name="bookDao" ref="bookDao"/>
        <property name="name" value="张三"/>
    </bean>
    </beans>

运行效果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值