spring学习笔记 -- day02 spring基础、IOC控制反转

一:srping的介绍

1、spring的体系结构

spring学习笔记 -- day02 spring基础、IOC控制反转_第1张图片

2、spring资源

a、spring-framework-4.2.4.RELEASESpring Framework的官方发行包

spring学习笔记 -- day02 spring基础、IOC控制反转_第2张图片

b、spring-framework-3.0.2.RELEASE-dependencies:依赖的第三方jar包

spring学习笔记 -- day02 spring基础、IOC控制反转_第3张图片

二:如何搭建spring的核心开发环境

1、导入spring核心开发的jar包


位置: spring-framework-3.2.0.RELEASE\libs

jar包


2、导入核心依赖的jar包(日志输出),可以使用 commons-loggingLog4J

a、jar包位置:

spring-framework-3.0.2.RELEASE-dependencies\org.apache.commons\com.springsource.org.apache.commons.logging\1.1.1

b、jar包


3.配置spring核心配置文件

三:spring中的IOC(控制反转)

1、控制反转概念

之前我们获取资源的方式:我们在获取对象时,都是采用new的方式。是主动的

spring学习笔记 -- day02 spring基础、IOC控制反转_第4张图片

控制反转之后获取资源的方式:我们获取对象时,同时跟工厂要,有工厂为我们查找或者创建对象。是被动的。      

2、入门程序

a、创建java工程,导入jar包

spring学习笔记 -- day02 spring基础、IOC控制反转_第5张图片
spring学习笔记 -- day02 spring基础、IOC控制反转_第6张图片

c、编写配置文件

(1)、导入约束

spring学习笔记 -- day02 spring基础、IOC控制反转_第7张图片

(2)、编写配置文件





	
	
	
	

d、编写servcie层和dao层

package cn.itcast.dao;

/**
 * 客户的持久层接口
 * @author zhy
 *
 */
public interface ICustomerDao {
	
	/**
	 * 保存客户
	 */
	void saveCustomer();

}

package cn.itcast.dao.impl;

import cn.itcast.dao.ICustomerDao;
/**
 * 客户的持久层实现类
 * @author zhy
 *
 */
public class CustomerDaoImpl implements ICustomerDao {

	@Override
	public void saveCustomer() {
		System.out.println("保存了客户....");
	}

}

package cn.itcast.service;

/**
 * 客户的业务层接口
 * @author zhy
 *
 */
public interface ICustomerService {
	
	/**
	 * 保存客户
	 */
	void saveCustomer();
}

package cn.itcast.service.impl;

import cn.itcast.dao.ICustomerDao;
import cn.itcast.service.ICustomerService;
/**
 * 客户的业务层实现类
 * @author zhy
 *
 */
public class CustomerServiceImpl implements ICustomerService {
	
	private ICustomerDao customerDao = null ;
	
	
	/**
	 * 默认无参构造函数
	 * 	当此方法一执行,就表示对象已经创建了
	 */	
	public CustomerServiceImpl() {
		System.out.println("客户的业务层实现类已经创建了");
	}



	@Override
	public void saveCustomer() {
		customerDao.saveCustomer();
	}

}

e、spring容器的初始化和资源的获取

package cn.itcast.web;

public class Client {

	@SuppressWarnings("all")
	public static void main(String[] args) {
		// 1.获取到Spring的容器,参数是spring配置文件带后缀的名称
		ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
		//如果配置文件在包中,就按照如下方式写 
		//ApplicationContext ac = newClassPathXmlApplicationContext("cn/itcast/config/bean.xml");
		// 2.根据bean的唯一标识获取对象
		ICustomerService customerService = (ICustomerService) ac.getBean("customerService");
		System.out.println(customerService);

		ICustomerDao customerDao = (ICustomerDao) ac.getBean("customerDao");
		System.out.println(customerDao);

		customerService.saveCustomer();
	}
}

四:springAPI的体系结构

1、体系结构图

spring学习笔记 -- day02 spring基础、IOC控制反转_第8张图片

2、分析

(1)、两个实现类

FileSystemXmlApplicationContext :用于加载本地磁盘上的配置文件,它是从文件系统中读取配置文件。用此类加载时,配置文件可以在磁盘任意位置。
ClassPathXmlApplicationContext :用于加载在classpath下的配置文件,它是从类路径下读取配置文件。用此类加载时,配置文件只能在类路径中。

(2)、BeanFactory和ApplicationContext的区别

BeanFactory

ApplicationContext不仅仅实现了BeanFactory,还实现了很多其他的接口,功能较为强大,且ApplicationContext的getBean()方法是在加载配置文件的时候就创建对象,是立即加载。时机开发中应用较多
BeanFactory的getBean方法是延时加载,即延时实例化Bean,用到的时候才创建对象


你可能感兴趣的:(ssm框架,ssh框架,spring,框架)