spring框架概述

举报
Java的学习之路 发表于 2022/05/30 20:12:28 2022/05/30
【摘要】 Spring框架的概述 1.什么是SpringSpring框架是一个轻量级的开源的Java开发框架,是为了解决企业应用开发的复杂性而创建的。可以在JavaSE和JavaEE中使用,整合了众多优秀的设计模式。轻量:spring框架所引用的jar包比较少,而且 体积小,而且可以独立使用对于运行环境没有额外要求,可以运行在开源的tomact服务器种,也可以运行在收费的weblogic,webs...

Spring框架的概述

1.什么是Spring

Spring框架是一个轻量级的开源的Java开发框架,是为了解决企业应用开发的复杂性而创建的。可以在JavaSE和JavaEE中使用,整合了众多优秀的设计模式。

  • 轻量:
    • spring框架所引用的jar包比较少,而且 体积小,而且可以独立使用
    • 对于运行环境没有额外要求,可以运行在开源的tomact服务器种,也可以运行在收费的weblogic,websphere
    • 代码移植性高,不需要实现额外的接口
  • 开源:免费
  • 整合设计模式
    • 工厂设计模式
    • 代理设计模式
    • 模板设计模式
    • 策略设计模式

Spring核心技术:

  • IOC(控制反转),把创建对象过程交给 Spring 进行管理
  • AOP(面向切面编程),不修改源代码进行功能增强

Spring又叫做容器,Spring作为容器,装的是Java对象,可以让Spring创建Java对象,给属性赋值

Spring的作用:实现解耦合,解决Java对象之间的耦合,解决模块之间的耦合。
既然这里说到了解耦合,那么我们肯定要知道耦合是什么意思。以我们写的代码来作为例子,耦合说的就是我们写的代码之间的关系性太高了,互相依赖,牵一发而动全身。接下来我通过代码来说明一下。

  public class A{
        public int i;
    }

    public class B{
        public void add(A a){
            System.out.println(a.i);
        }
    }
 

我们可以发现B的代码依赖于A,如果A的代码发生改变,B的代码也会出现变化,我们应该尽量避免这样的情况发生,像我们之前在JavaSE所学到的接口,多态等都可以实现解耦合,我们写代码尽量让模块之间的关联少一点,不然可能一个模块出现错误,我们修改代码以后,导致其他的模块也要修改,这样就很繁琐了。

Spring 特点
(1)方便解耦,简化开发
(2)Aop 编程支持
(3)方便程序测试
(4)方便和其他框架进行整合
(5)方便进行事务操作
(6)降低 API 开发难度

Spring框架的官网https://spring.io/

在这里插入图片描述

2.什么是设计模式

  • 广义概念
    • 面向对象设计中,解决特定问题的经典代码
  • 狭义概念
    • GOF4人帮定义的23种设计模式

3.工厂设计模式

3.1什么是工厂设计模式

工厂设计模式简单来说就是通过工厂类来创建对象
我们先来看看以前我们怎么创建对象的

User user=new User();
Student student = new Student();

我们以前都是通过new来创建对象,但是工厂设计模式不建议我们用new的方式来创建对象,而是希望我们通过工厂类来创建对象。
这就涉及到工厂的好处:解耦合
刚刚在上面已经说过耦合了,这里我就简单回顾一下
我们来看看耦合的概念

  • 耦合:指的是代码之间的强关联关系,一方的改变会影响另一方
  • 耦合带来的问题:不利于代码维护
  • 耦合我们可以简单理解,把接口的实现类,硬编码在程序中
    • 比如 Dao dao = new DaoImpl();
  • 通过工厂类我们可以实现解耦合

3.2简单工厂的设计

在这里插入图片描述
在这里插入图片描述

package com.zyh.basic;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**工厂类
 * @author zengyihong
 * @create 2022--04--14 0:15
 */
public class BeanFactory {
  private static Properties properties=new Properties();
  static {
     第一步获得IO输入流
    InputStream inputStream = BeanFactory.class.getResourceAsStream("/UserService.properties");
    
     第二步 文件内容 封装到配置文件中
    try {
      properties.load(inputStream);
    } catch (IOException e) {
      e.printStackTrace();
    }finally {
      if (inputStream !=null){
        try {
          inputStream.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }

  }
  public static UserService getUserService(){
    UserService userService=null;
    try {
      Class clazz=Class.forName(properties.getProperty("userservice"));
        userService =(UserService) clazz.newInstance();

    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    } catch (InstantiationException e) {
      e.printStackTrace();
    } catch (IllegalAccessException e) {
      e.printStackTrace();
    }
    return  userService;
  }

  public static UserDao getUserDAO(){
    UserDao userDao=null;

    try {
      Class clazz = Class.forName(properties.getProperty("userDao"));
      userDao = (UserDao)clazz.newInstance();
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    } catch (InstantiationException e) {
      e.printStackTrace();
    } catch (IllegalAccessException e) {
      e.printStackTrace();
    }
    return userDao;


  }



}

3.3通用工厂的设计

我们可以看得出来,我们以后如果想要对一个类进行解耦合,就应该在工厂类中写相应的工厂方法,想要获得A类,就应该写getA方法

在这里插入图片描述
接下来我们就来想想要怎么才可以设计出一个通用的工厂类

我们想要写一个通用的方法来返回所有的类型,所以方法类型应该是Object,其实这里有一个比较烧脑筋的东西就是,我们并不知道用户想要创建哪一个对象,那么我们要怎么设计呢?
我们可以让调用者传参数过来,根据参数来创建对象
传入的参数是String类型,传入的是我们在配置文件中写的key

可以创建一切想要的对象
public static Object getBean(String key){
  Object obj=null;
  try{
    Class clazz=Class.forName(properties.getProperty(key));
    obj=clazz.newInstance();
  }catch(Exception e){
    e.printStackTrace();
  }
  return obj;
}

 

在这里插入图片描述

3.4通用工厂的使用方式

我们定义通用工厂实际上是为了来创建对象

  • 第一步定义类
  • 第二步为了让工厂知道我们创建的类是哪一个类,所以我们可以通过配置文件的配置来告知工厂
    • 以key=value的形式
  • 第三步通过工厂来获得类的对象
    • Object obj=BeanFactory.getBean(“key”);实际开发中在这里根据具体的需要进行类型转换

4.总结

Spring本质是工厂,不过这个工厂不需要我们来开发,Spring已经创建好这个工厂了,Spring创建的这个工厂叫ApplicationContext。

根据上面我们自己写的,我们可以看出来,除了工厂类以外,我们应该还要有配置文件,Spring中这个配置文件名字是applicationContext.xml

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。