Spring Framework of IOC(控制反转)

文章通过一个简单的Java程序例子介绍了Spring的IOC(DI)概念。首先展示了非Spring环境下的程序运行方式,然后逐步引入Spring,配置XML文件,通过ApplicationContext加载bean。接着,文章展示了如何利用Spring的DI降低耦合度,修改BookServiceimpl以避免直接new对象,而是通过setter方法注入依赖。

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

一、IOC入门案例

前言:先熟悉非Spring环境下运行的程序。

 文件目录:

 程序结构如上:业务层接口(BookService)、业务层实现类(BookServiceimpl)、数据层接口(Bookdao)、数据层实现类(Bookdaoimpl)。

具体代码如下:

Bookdao.java

public interface Bookdao {
    public void save();
}

Bookdaoompl.java

public class Bookdaoimpl implements Bookdao {
    public void save(){
        System.out.println("This is Bookdao save");
    }
}

BookService.java

public interface BookService {
    public void save();
}

BookServiceimpl.java

public class BookServiceimpl implements BookService {
    private Bookdao bookdao=new Bookdaoimpl();
    public void save(){
        System.out.println("This is bookservice save");
        bookdao.save();
    }
}

编写一个测试类(App.java)在非Spring环境下运行程序,具体代码如下:

App.java

public class App {
    public static void main(String[] args) {
        BookService bookService=new BookServiceimpl();
        bookService.save();
    }
}

运行结构如下:

Spring环境下运行程序:

第一步:配置在XLM配置文件中的spring结构。

打开pom.xml文件,添加配置文件代码:

<dependencies>
    ...............

      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
      </dependency>

    ...............
<dependencies>

第二步:在resources文件中创建applicationContext.xml文件。

在applicationContext.xml文件中配置bean,配置代码如下(添加即可,class路径自配):

<bean id="bookdao" class="mydream.dao.impl.Bookdaoimpl"/>
<bean id="bookservice" class="mydream.service.impl.BookServiceimpl"/>

第三步:创建测试类(App2.java)运行程序,具体代码如下:

public class App2 {
    public static void main(String[] args) {
        ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
//        Bookdao bookdao=(Bookdao) ctx.getBean("bookdao");
//        bookdao.save();
        BookService bookService=(BookService) ctx.getBean("bookservice");
        bookService.save();
    }
}

补充:Spring-DI入门案例

在上面的Spring环境下运行的程序中,还是有较高的耦合度的,在BookServiceimpl.java文件中使用了new,毕竟IOC的意义在于能不new就不new。所以DI就可以打个辅助了。

第一步:更改BookServiceimpl.java文件代码,不使用new,具体代码如下:

public class BookServiceimpl implements BookService {
    private Bookdao bookdao;
    public void save(){
        System.out.println("This is bookservice save");
        bookdao.save();
    }
    public void setBookdao(Bookdao bookdao){
        this.bookdao=bookdao;
    }
}

第二步:在applicationContext.xml文件中绑定关系,具体代码如下:

<bean id="bookdao" class="mydream.dao.impl.Bookdaoimpl"/>
<bean id="bookservice" class="mydream.service.impl.BookServiceimpl">
	<property name="bookdao" ref="bookdao"/>
</bean>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值