zoukankan      html  css  js  c++  java
  • Spring_002 依赖注入方式实现

    继续写我们的第一个Spring程序,这次我们使用依赖注入的方式实现程序

    第一步,建立我们的Spring_002程序,并在程序中添加BookDao.java、BookDaoImpl.java、BookService.java、BookServiceImpl.java、

    ApplicationContext.xml

    第二步 在BookDao接口中配置一个addBook方法

    package com.zk.myspring;
    
    public interface BookDao {
    	public void addBook();
    }
    

      

    在BookDaoImpl中实现addBook方法

    package com.zk.myspring;
    
    public class BookDaoImpl implements BookDao{
    	@Override
    	public void addBook() {
    		// TODO Auto-generated method stub
    		System.out.println("addBook");
    	}
    }
    

      

    在BookService接口中配置addBook方法

    package com.zk.myspring;
    
    public interface BookService {
    	public abstract void addBook();
    }

    在BookServiceImpl方法中实现addBook方法

    package com.zk.myspring;
    
    public class BookServiceImpl implements BookService{
    
    	//方式一:接口等于实现类
    	//private BookDao bookDao=new BookDaoImpl();
    	//方式二:接口+set方法
    	private BookDao bookdao;
    	
    	public void setBookdao(BookDao bookdao) {//依赖注入
    		this.bookdao = bookdao;
    	}
    
    	@Override
    	public void addBook() {
    		// TODO Auto-generated method stub
    		//this.bookdao.addBook();
    		System.out.println("add book");
    	}
    }

    注意在BookServiceImpl文件中,我们使用接口+set方法实现,并在setBookdao方法中实现依赖注入,使得BookService依赖于BookDao

    第三步 配置我们的ApplicationContext.xml,使用property属性将BookDao注入进BookService

    <property name="bookdao" ref="bookDaoId"></property> 

    <property> 用于属性注入   

    name:bean的属性名,通过setter方法获得

    ref:另一个bean的id值的引用

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:util="http://www.springframework.org/schema/util"
           xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
    <!-- 创建Dao -->
    <!-- 模拟spring执行过程
    创建Service实例:BookService bookservice=new BookServiceImpl();  IOC <bean>
    创建Dao实例:BookDao bookDao=new BookDaoImpl();   IOC
    将dao设置给service:bookservice.setBookDao(bookDao);    DI  <property>
    
    <property> 用于属性注入
    name:bean的属性名,通过setter方法获得
    ref:另一个bean的id值的引用
     -->
    <!--创建Dao  -->
    <bean id="bookDaoId" class="com.zk.myspring.BookDaoImpl"></bean>
    <!-- 创建service -->
    <bean id="bookServiceId" class="com.zk.myspring.BookServiceImpl">
    <property name="bookdao" ref="bookDaoId"></property>
    </bean>
    </beans>

    第四步 创建一个test方法,对配置文件进行测试

    package com.zk.myspring;
    
    import org.junit.Test;
    import org.springframework.beans.factory.BeanFactory;
    import org.springframework.beans.factory.xml.XmlBeanFactory;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.core.io.ClassPathResource;
    
    public class TestBook {
    	public static void main(String[]args)
    	{
    		//从spring容器中获得
    		String path="ApplicationContext.xml";
    		ApplicationContext ac=new ClassPathXmlApplicationContext(path);
    		BookService bs=(BookService) ac.getBean("bookServiceId");
    		bs.addBook();
    	}
    	@Test
    	public void test1(){
    		//使用BeanFactory实例化
    		String path="ApplicationContext.xml";
    		BeanFactory bf=new XmlBeanFactory(new ClassPathResource(path));
    		BookService bs=(BookService) bf.getBean("bookServiceId");
    		bs.addBook();
    	}
    }

    得出输出

    依赖注入方式配置spring成功

  • 相关阅读:
    Mybatis用到的设计模式和常用类原理
    svn 版本迁移到 git 仓库
    mysql 主从master-slave同步复制 配置,为读写分离准备
    java.lang.NoSuchFieldError 异常原因
    PropertiesFactoryBean PropertyPlaceholderConfigurer 区别
    关于BigDecimal 和 double 类型保存金钱,以及精度问题,银行家舍入法
    mysql遇到锁表常用命令
    代码质量管理工具 sonar 配置
    java 环境变量java_home配置多加了 导致zookeeper莫名其妙问题。
    svn 版本转为git
  • 原文地址:https://www.cnblogs.com/longlyseul/p/9879075.html
Copyright © 2011-2022 走看看