Spring概述

发布时间:2024年01月05日

1.1.Spring介绍

? Spring是轻量级Java EE应用开源框架(官网: http://spring.io/ ),它由Rod Johnson创为了解决企业级编程开发的复杂性而创建

1.2.简化应用开发体现在哪些方面?

  1. IOC

    解决传统Web开发中硬编码所造成的程序耦合

  2. AOP

    实现在运行期间不修改源代码对程序进行增强

  3. 粘合剂

    Spring是一个超级粘合平台,除了自己提供功能外,还提供整合其他技术和框架的能力

1.3.Spring的体系结构

Spring 框架根据功能的不同大体可分为 Data Access/Integration(数据访问与集成)WebAOP、Aspects、Instrumentation(检测)、Messaging(消息处理)Core Container(核心容器)Test

  • Core Container: 框架的最基础部分,提供控制反转和依赖注入特性
  • AOP :提供了面向切面的编程的实现
  • Data Access/Integration:简化了持久层的操作
  • Web:提供了Spring MVC Web 框架实现以及与Servlet、WebSocket的集成
  • Test:方便程序的测试

1.4.Spring的发展历程

  • 1997年IBM提出了EJB的思想

  • 1998年,SUN制定开发标准规范EJB1.0

  • 1999年,EJB1.1发布

  • 2001年,EJB2.0发布

  • 2003年,EJB2.1发布

    Rod Johnson(spring之父)

    ? Expert One-to-One J2EE Design and Development(2002)

    ? 阐述了J2EE使用EJB开发设计的优点及解决方案

    ? Expert One-to-One J2EE Development without EJB(2004)

    ? 阐述了J2EE开发不使用EJB的解决方式(Spring雏形)

  • 2006年,EJB3.0发布

  • 2017年9月发布了Spring的最新版本Spring5.0通用版x

2.Spring IOC

创建工程:

image-20220103231029388

2.1.程序的耦合

  • 耦合:耦合指的就是对象之间的依赖关系。对象之间的耦合越高,维护成本越高。

  • 案例:没有引入IOC容器时系统的Web层、业务层、持久层存在耦合

    /**
     * 持久层实现类
     */
    public class UserDaoImpl implements UserDao {
    
        @Override
        public void addUser(){
            System.out.println("insert into tb_user......");
        }
    }
    
    /**
     * 业务层实现类
     */
    public class UserServiceImpl implements UserService {
        //硬编码:此处有依赖关系
        private UserDao userDao = new UserDaoImpl();
    
        public void addUser(){
            userDao.addUser();
        }
    }
    
    /**
     * 模拟表现层
     */
    public class Client {
        public static void main(String[] args) {
            //硬编码:此处有依赖关系
            UserService userService = new UserServiceImpl();
            userService.addUser();
        }
    }
    
  • 问题分析:

    上边的代码service层在依赖dao层的实现类,此时如果更改dao了层的实现类或此时没有dao层实现类,编译将不能通过。

  • IOC(工厂模式)解耦:

    1. 把所有的dao和service对象使用配置文件配置起来
    2. 当服务器启动时读取配置文件
    3. 把这些对象通过反射创建出来并保存在容器中
    4. 在使用的时候,直接从工厂拿
文章来源:https://blog.csdn.net/w2144217940/article/details/135395186
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。