zoukankan      html  css  js  c++  java
  • 孙哥讲解spring5day 1 lq

    1.EJB(Enterprise Java Bean)存在的问题

    • 运行环境苛刻(除了java Web运行需要的servlet引擎,还需要EJB容器)
    • 代码可移植性差(其实与第一点相关,个人理解)
      image
    • 总结:EJB重量级的框架

    2.什么是spring?

    spring是一个轻量级的javaEE解决方案,整合众多优秀的设计模式.

    • 轻量级
      1. 对于运行环境没有额外的要求
        开源 Tomcat resion jetty(后两者都没用过 不认识)
        收费 weblogic webphere
      2. 代码移植性高
        不需要实现额外的接口
    • javaEE的解决方案
      image
    • 整合设计模式
      1. 工厂
      2. 代理
      3. 策略
      4. 模板

    3.设计模式

    1. 广义概念
      面向对象设计中,解决特定问题的经典代码
    2. 狭义概念
      GOF4人帮定义的23种设计模式:工厂、适配器、装饰器、门面、代理、模板。。。

    4.工厂设计模式

    1. 什么是工厂设计模式
      1. 概念:通过工厂类,来创建对象
      2. 优点:解耦合
        耦合:☞代码间的强关联关系,一方的改变会影响到另一方。
        问题:不利于代码维护
        简单:把接口的实现类,硬编码在程序中
        UserSevice userService = new UserServiceImpl();
    2. 简单工厂的设计
      package com.company.spring;
      
      import java.io.IOException;
      import java.io.InputStream;
      import java.util.Properties;
      
      /**
       * @author lq
       * @create 2021-09-06 22:49
       * @description: spring 模拟bean依赖注入的示例代码
       */
      public class BeanFactory {
      	private static Properties properties = new Properties();
      
      	static {
      		InputStream inputStream = null;
      		try {
      			//获得输入流
      			inputStream = BeanFactory.class.getResourceAsStream("/application.properties");
      			//将文件内容 封装到 Properties 集合中,(key-value的形式,类似与map)
      			properties.load(inputStream);
      		} catch (IOException e) {
      			e.printStackTrace();
      		} finally {
      			if (inputStream != null) {
      				try {
      					inputStream.close();
      				} catch (IOException e) {
      					e.printStackTrace();
      					System.out.println("输入流关闭异常!");
      				}
      			}
      		}
      	}
      
      	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 (IllegalAccessException e) {
      			e.printStackTrace();
      		} catch (InstantiationException e) {
      			e.printStackTrace();
      		}
      		return userService;
      	}
      }
      
    3. 通用工厂的设计
      • 存在代码的冗余

      image

      • 设计通用工厂类
      public class BeanFactory{
      	public static Object getBean(String key) {
      		Object object = null;
      		try {
      			Class<?> clazz = Class.forName(properties.getProperty(key));
      			object = clazz.newInstance();
      		} catch (Exception e) {
      			e.printStackTrace();
      		}
      		return object;
      	}
      }
      
    4. 通用工厂的使用方式
      1. 首先要创建出所需要的类;
      2. 通过配置文件的配置告知工厂;
      3. 通过工厂获得类的实例化对象。
        UserService userService = (UserService) BeanFactory.getBean("userService");

    5.总结

    Spring本质:工厂 ApplicationContext (applicationContext.xml)

  • 相关阅读:
    吴恩达 — 神经网络与深度学习 — L1W3练习
    吴恩达 — 神经网络与深度学习 — L1W2练习
    吴恩达 — 神经网络与深度学习 — L1W1练习
    Scala基础编程
    HDFS常用命令介绍与使用
    关于Eureka客户端连接服务端报错问题Cannot execute request on any known server
    Spring Cloud_Ribbon
    Spring Cloud_eureka组件
    CAS单点登录入门
    Spring Boo数据访问JDBC
  • 原文地址:https://www.cnblogs.com/rbwbear/p/15235722.html
Copyright © 2011-2022 走看看