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

    xiaoxiao2025-08-18  1

    一:srping的介绍

    1、spring的体系结构

    2、spring资源

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

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

    二:如何搭建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的方式。是主动的

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

    2、入门程序

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

    c、编写配置文件

    (1)、导入约束

    (2)、编写配置文件

    <?xml version="1.0" encoding="UTF-8"?> <!-- 导入schema约束: 约束的位置: /docs/spring-framework-reference/html/xsd-configuration.html --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 把资源交给spring来管理 --> <bean id="customerService" class="cn.itcast.service.impl.CustomerServiceImpl"></bean> <bean id="customerDao" class="cn.itcast.dao.impl.CustomerDaoImpl"></bean> </beans>

    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、体系结构图

    2、分析

    (1)、两个实现类

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

    (2)、BeanFactory和ApplicationContext的区别

    BeanFactory

    ApplicationContext不仅仅实现了BeanFactory,还实现了很多其他的接口,功能较为强大,且ApplicationContext的getBean()方法是在加载配置文件的时候就创建对象,是立即加载。时机开发中应用较多 BeanFactory的getBean方法是延时加载,即延时实例化Bean,用到的时候才创建对象
    转载请注明原文地址: https://ju.6miu.com/read-1301833.html
    最新回复(0)