模拟Spring容器使用bean.xml创建对象的过程

正式使用spring之前先来体验一下spring的自动创建对象,让面向对象编程变成面向接口编程。

思路:

    在调用spring的bean.xml配置时,就已经自动创建Dao层和Service层的对象

一、JAR包

        因为是来体验spring的bean.xml,所以不需要连接数据库,那就只需要spring的四个核心包。

        spring-beans、context、core、expression 四大金刚

二、接口

        两个接口 

        一个是Dao接口ICustomerDao.java 里面编写一个void方法saveCustomer();

        一个是Service接口ICustomerService.java 里面也编写一个void方法saveCustomer();

三、实现类

        两个接口对应两个实现类,代码如下

        

package service.impl;

import org.springframework.beans.factory.BeanFactory;

import dao.ICustomerDao;
import service.ICustomerService;

public class CustomerServiceImpl implements ICustomerService {
        //创建customerDao用来接收Dao层数据
	private ICustomerDao customerDao;
	
	public void setCustomerDao(ICustomerDao customerDao) {
		this.customerDao = customerDao;
	}

	@Override
	public void saveCustomer() {

		System.out.println("业务层调用持久层");
		customerDao.saveCustomer();

	}

}
package dao.impl;

import dao.ICustomerDao;

public class CustomerDaoImpl implements ICustomerDao {

	//模拟一个持久层实现类
	@Override
	public void saveCustomer() {
		System.out.println("持久层保存了客户");
	}

}



        为什么要在saveCustomer里面输出?Dao层是和数据库连接然后将得到的数据通过Dao层的对象传给业务层,

        那么这个时候customer(也就是数据)就存在对象中,Service也一样 ,需要将Dao层的数据传给客户端,

        那么就需要对象,所以这个saveCustomer方法的输出就可以体现数据的转移过程,以及bean.xml的创建对象过程。

四、bean.xml

        这个时候bean.xml的配置就变得很明朗了,既然spring是可以创建对象,那就必须是为了上面两个类来创建对象的。

        而我们配置的时候就从service对象开始。至于为什么从service开始,自己也不是很理解。

    





	




五、运行

    这个时候就是要把上面所有的对象关联起来了,那就创建一个客户端类Client.java并带有main方法

    首先在main方法下,创建一个spring容器对象,并且对象通过ClassPathXmlApplicationContext获取到bean.xml文件而创建

    那么该对象里就已经拿到了bean里面的内容,在这个时候也已经创建了两个对象。

   而 ICustomerService cs这个对象通过spring对象的getBean方法获取名为customerService的值时,

    cs就已经成为了CustomerServiceImpl的对象,另外一个Dao对象在这个时候通过set方法传递给了customerDao.

    下面贴代码

    

package ui;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import service.ICustomerService;

public class Client {

	public static void main(String[] args) {
		ApplicationContext ac=new ClassPathXmlApplicationContext("bean.xml");
		ICustomerService cs=(ICustomerService) ac.getBean("customerService");
		cs.saveCustomer();
	}

}

可以看到最后cs调用了saveCustomer()方法,完成了这一段spring容器创建对象过程的模拟。


        


你可能感兴趣的:(JAVA,spring)