IoC和DI入门案例

IoC思路分析

1、管理什么 --ServiceDao

2、如何将被管理的对象告知IoC容器 --配置

3、被管理的对象交给IoC容器,如何获取到IoC容器 --接口

4、IoC容器得到后,如何从容器中获取bean --接口方法

5、使用Spring导入哪些坐标 --pom.xml

 

代码实现:

①导入Spring坐标

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.1.11.RELEASE</version>
        </dependency>
    </dependencies>

②定义Spring管理的类(接口)

1 public interface BookService {
2     public abstract void save();
3 }
View Code
public class BookServiceImpl implements BookService {
    
    private BookDao bookDao = new BookDaoImpl() ;

    public void save(){
        System.out.println("book service save...");
        bookDao.save();
    }

}
View Code

③创建Spring配置文件allicationContext.xml,用来管理bean

1 <!--    bean标签表示配置bean-->
2 <!--    id属性表示给bean起名字-->
3 <!--    class属性表示给bean定义类型-->
4 
5     <bean id="bookDao" class="wcx.dao.impl.BookDaoImpl"/>
6     <bean id="bookService" class="wcx.service.impl.BookServiceImpl">
7         
8      </bean>
View Code

④初始化IoC容器,通过容器获取bean

 1 public class App2 {
 2     public static void main(String[] args) {
 3          //获取IoC容器
 4         ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
 5         //获取bean
 6          BookDao bookDao = (BookDao) ctx.getBean("bookDao");
 7          bookDao.save();
 8 
 9          BookService bookService = (BookService) ctx.getBean("bookService");
10          bookService.save();
11 
12 
13     }
14 }
View Code

 

DI入门案例思路分析

1、基于IoC管理bean

2、Service中使用new形式创建的Dao对象不保留

3、Service中需要的Dao对象如何进入到Servicesetter方法

4、ServiceDao之间的关系如何描述 配置

 

代码实现:

①删除使用new创建的对象代码

②提供依赖对象对应的setter方法

 

 1 public class BookServiceImpl implements BookService {
 2     //删除业务层中用new方式产生的对象
 3     private BookDao bookDao ;
 4 
 5     public void save(){
 6         System.out.println("book service save...");
 7         bookDao.save();
 8     }
 9 //提供对应的set方法
10     public void setBookDao(BookDao bookDao) {
11         this.bookDao = bookDao;
12     }
13 }
View Code

 

③配置service与dao的关系

1  <bean id="bookService" class="wcx.service.impl.BookServiceImpl">
2 <!--    配置service与dao的关系-->
3         <!--property属性表示配置当前bean的属性
4         name表示配置中哪一个具体的属性
5         ref表示参照哪一个bean-->
6         <property name="bookDao" ref="bookDao"></property>
7 </bean>
View Code

 

 变量名之间的对应关系

 

posted @ 2023-01-31 10:04  喝了娃哈哈立刻笑哈哈  阅读(27)  评论(0)    收藏  举报