03-spring-DI

DI Dependency Injection ,依赖注入
    is a :是一个,继承。
    has a:有一个,成员变量,依赖。
        class B {
           private A a;   //B类依赖A类
        }
    依赖:一个对象需要使用另一个对象
    注入:通过setter方法进行另一个对象实例设置

    例如:

    class BookServiceImpl{
        //之前开发:接口 = 实现类  (service和dao耦合)
        //private BookDao bookDao = new BookDaoImpl();
         //spring之后 (解耦:service实现类使用dao接口,不知道具体的实现类)
        private BookDao bookDao;
        setter方法
   }


    模拟spring执行过程
    创建service实例:BookService bookService = new BookServiceImpl()        -->IoC  <bean>
    创建dao实例:BookDao bookDao = new BookDaoImple()                -->IoC
    将dao设置给service:bookService.setBookDao(bookDao);                -->DI   <property>1.1    目标类
创建BookService接口和实现类
创建BookDao接口和实现类
将dao和service配置 xml文件
使用api测试
1.2  dao

public interface IBookDao {
    
    public void addBook();

}
public class BookDaoImpl implements IBookDao {

    @Override
    public void addBook() {
        System.out.println("add book");
    }

}


1.3   service

public class BookServiceImpl implements IBookService {
	
	// 方式1:之前,接口=实现类
    //	private IBookDao bookDao = new BookDaoImpl();
	// 方式2:接口 + setter
	private IBookDao bookDao;
	public void setBookDao(IBookDao bookDao) {
		this.bookDao = bookDao;
	}
	
	@Override
	public void addBook(){
		this.bookDao.addBook();
	}

}


1.4    配置文件

    <!-- 配置service 
		<bean> 配置需要创建的对象
			id :用于之后从spring容器获得实例时使用的
			class :需要创建实例的全限定类名
		<property> 用于进行属性注入
			name: bean的属性名,通过setter方法获得
				setIud ##> Iud  ##> iud
			ref :另一个bean的id值的引用
	-->
	<bean id="bookServiceId" class="com.hwua.di.BookServiceImpl">
		<property name="ibd" ref="bookDaoId"></property>
	</bean>
	<bean id="bookDaoId" class="com.hwua.di.BookDaoImpl"></bean>


<!-- 配置service 
        <bean> 配置需要创建的对象
            id :用于之后从spring容器获得实例时使用的
            class :需要创建实例的全限定类名
        <property> 用于进行属性注入
            name: bean的属性名,通过setter方法获得
                setIud ##> Iud  ##> iud
            ref :另一个bean的id值的引用
    

    <bean id="bookServiceId" class="com.hwua.di.BookServiceImpl">
        <property name="ibd" ref="bookDaoId"></property>
    </bean>
    <bean id="bookDaoId" class="com.hwua.di.BookDaoImpl"></bean>

 


1.5   测试

    @Test
    public void demo01(){
        //从spring容器获得
        String xmlPath = "com/hwua/di/beans.xml";
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
        BookService bookService = (BookService) applicationContext.getBean("bookServiceId");
        
        bookService.addBook();
        
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值