一篇文章让你迅速入门Spring框架

1.传统Javaweb开发困惑

问题一:层与层之间紧密耦合在了一起,接口与具体实现紧密耦合在了一起

解决思路:程序代码中不要手动new对象,第三方根据要求为程序提供需要的Bean对象

问题二:通用的事务功能耦合在业务代码中,通用的日志功能耦合在业务代码中

解决思路:程序代码中不要手动new对象,第三方根据要求为程序提供需要的Bean对象的代理对象

2.loC,DI,AOP思想

  • loC思想(Inversion of Control),控制反转,强调的是原来在程序中创建Bean的权利反转给第三方

  • DI思想(Dependency Injection),依赖注入,强调的Bean之间的关系,这种关系第三方负责去设置

  • AOP思想(Aspect Oriented Programming),面向切面编程,功能的横向抽取,主要实现方式就是Proxy

3.框架(Framework)

  • 基本特点
  1. 基于基础技术之上,从众多业务中抽取出来的通用解决方案

  1. 框架是一个半成品,使用框架规定的语法开发可以提高开发效率

  1. 框架一般具有扩展性

  1. 框架内部使用大量的设计模式,算法,底层代码操作技术,如,反射,xml解析,注解解析等

  • Java中常用的框架

-基础框架:完成基本业务操作的框架,如MyBatis,Spring,SpringMVC,Struts2,Hibernate等

-服务框架:特定领域的框架,一般还可对外提供服务框架,如MQ,ES,Nacos等

4.Spring框架

4.1概述

Spring是一个开源的轻量级Java开发应用框架,可以简化企业级应用开发

Spring的生态及其完善,不管Spring哪个领域的解决方案都依附于Spring Framework基础框架

Spring的官网:www.spring.io

4.2Spring Framework技术栈

图示:

4.3BeanFactory
4.3.1loC思想实现
  1. 导入Spring的jar包或者Maven坐标

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.20</version>
        </dependency>
</dependencies>
  1. 定义接口及其接口实现类

  1. 创建xml配置文件,将接口实现类的信息配置到该xml文件中

  1. 编写测试代码,创建BeanFactory,加载配置文件,获取接口的实例对象

// 创建工厂对象
        DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
        // 创建一个读取器(xml文件)
        XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
        // 读取配置文件给工厂
        reader.loadBeanDefinitions("beans.xml");
        // 根据id获取Bean实例对象
        UserService userService = (UserService)beanFactory.getBean("UserService");
        System.out.println(userService);		
4.3.2DI思想实现
  1. 定义UserDao接口及其UserDaoImpl实现类

  1. 修改UserServiceImpl代码,添加一个setUserDao(UserDao userDao)用于接收注入的对象

private UserDao userDao;
    //接收注入的对象
    public void setUsrDao(UserDao userDao) {
        this.userDao = userDao;
        System.out.println(userDao);
    }
  1. 修改beans.xml配置文件,在UserDaoImpl的 中嵌入 配置注入

<!--配置UserService-->
    <bean id="UserService" class="com.itlzxr.service.impl.UserServiceImpl">
        <property name="usrDao" ref="userDao"></property>
    </bean>
    <!--配置UserDao-->
    <bean id="userDao" class="com.itlzxr.dao.impl.UserDaoImpl"></bean>
  1. 编写测试代码,创建BeanFactory,加载配置文件,获取UserService实例对象

BeanFactory是Spring中最底层,最核心的对象
4.4ApplicationContext(更常用)

ApplicationContext称为Spring容器,内部封装了BeanFactory,比BeanFactory功能更丰富强大

ApplicationContext进行开发时,xml配置文件的名称习惯写成applicationContext.xml

		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService userService = (UserService) applicationContext.getBean("userService");
        System.out.println(userService);
4.5BeanFactory与ApplicationContext的关系

1)BeanFactory是Spring的早期接口,称为Spring的Bean工厂,ApplicationContext是后期更高级接口,称之为Spring 容器

2)ApplicationContext在BeanFactory基础上对功能进行了扩展,例如:监听功能、国际化功能等。BeanFactory的API更偏向底层,ApplicationContext的API大多数是对这些底层API的封装

3)Bean创建的主要逻辑和功能都被封装在BeanFactory中,ApplicationContext不仅继承了BeanFactory,而且ApplicationContext内部还维护着BeanFactory的引用,所以,ApplicationContext与BeanFactory既有继承关系,又有融合关系

4)Bean的初始化时机不同,原始BeanFactory是在首次调用getBean时才进行Bean的创建,而ApplicationContext则是配置文件加载,容器一创建就将Bean都实例化并初始化好

ApplicationContext除了继承了BeanFactory外,还继承了ApplicationEventPublisher(事件发布器)、ResouresPatternResolver(资源解析器)、MessageSource(消息资源)等。但是ApplicationContext的核心功能还是BeanFactory。
4.6继承体系

1.beanFactory继承体系

BeanFactory是核心接口,项目运行过程中肯定有具体实现参与,这个具体实现就是DefaultListableBeanFactory,而ApplicationContext内部维护的Beanfactory的实现类也是它

2.ApplicationContext继承体系

-只在Spring基础环境下,即只导入spring-context坐标时,此时ApplicationContext的继承体系

只在Spring基础环境下,常用的三个ApplicationContext作用如下:

实现类

功能描述

ClassPathXmlApplicationContext

加载类路径下的xml配置的ApplicationContext

FileSystemXmlApplicationContext

加载磁盘路径下的xml配置的ApplicationContext

AnnotationConfigApplicationContext

加载注解配置类的ApplicationContext

-如果Spring基础环境中加入了其他组件解决方案,如web层解决方案,即导入spring-web坐标,此时

ApplicationContext的继承体系

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.7</version>
</dependency>

在Spring的web环境下,常用的两个ApplicationContext作用如下

实现类

功能描述

XmlWebApplicationContext

web环境下,加载类路径下的xml配置的ApplicationContext

AnnotationConfigWebApplicationContext

web环境下,加载磁盘路径下的xml配置的ApplicationContext

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值