一、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>