Spring之IOC

1、Spring的概述

(spring是什么)
在这里插入图片描述
(spring的两大核心)
AOP、IOC
(spring的发展和优势)
在这里插入图片描述
在这里插入图片描述
(spring体系结构)
在这里插入图片描述

2、JDBC程序分析

耦合:程序之间的依赖关系(类之间的依赖、方法之间的依赖)
解耦:降低程序之间的依赖性
实际开发:编译期不依赖 运行期才依赖
解耦的思路:使用反射创建对象避免用new的方式、读取配置文件来获取要创建对象的权限类名

package com.leyou.httpdemo.com.huke.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 * 程序的耦合
 */
public class JDBC {
  public static void main(String[] args) throws Exception {
    //注册驱动
    //DriverManager.registerDriver(new com.mysql.jdbc.Driver());
    Class.forName("com.mysql.jdbc.Driver");
    //获取连接
    Connection connection = DriverManager.getConnection("jdbc:mysql:localhost:///","root","root");
    //获取操作数据库的预处理对象
    PreparedStatement preparedStatement = connection.prepareStatement("select * from user");
    //执行SQL,得到结果集
    ResultSet resultSet = preparedStatement.executeQuery();
    while(resultSet.next()){
      System.out.println(resultSet.getString("name"));
    }
    //遍历结果集关闭资源
    resultSet.close();
    preparedStatement.close();
    connection.close();
  }
}

3、工厂类

package com.leyou.httpdemo.factory;

import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

/**
 * bean:在计算机英语中有可重用组件的含义
 * <p>
 * javBean 用java语言编写的可重用组件
 * <p>
 * 它就是创建我们的service和dao对象
 * 1、需要一个配置文件来配置我们的service和dao
 * 配置类容唯一标志:==权限类名(key=value)
 * 2、通过读取配置文件中的配置内容,反射创建对象
 * 配置文件可以是xml也可以是properties
 */
public class BeanFactory {
  //定义一个properties对象
  private static Properties properties;
 //定义一个Map 用于存放我们要创建的对象,我们把他称为容器
  private static Map<String,Object> beans;
  static {
    properties = new Properties();
    InputStream resourceAsStream = BeanFactory.class.getClassLoader().getResourceAsStream("beanFactory.properties");
    try {
      properties.load(resourceAsStream);
      //实例化容器
      beans = new HashMap<>();
      //取出配置文件中的key
      Enumeration<Object> keys = properties.keys();
      while(keys.hasMoreElements()){
        String key = keys.nextElement().toString();
        //根据key获取value
        String property = properties.getProperty(key);
        Object value = Class.forName(property).newInstance();
        beans.put(key,value);
      }
    } catch (IOException | ClassNotFoundException e) {
      e.printStackTrace();
    } catch (IllegalAccessException e) {
      e.printStackTrace();
    } catch (InstantiationException e) {
      e.printStackTrace();
    }
  }

  /**
   * 根据名称获取对象
   * @param beanName
   * @return
   * @throws ClassNotFoundException
   * @throws IllegalAccessException
   * @throws InstantiationException
   */
  public static Object getBean2(String beanName) throws ClassNotFoundException, IllegalAccessException, InstantiationException {

    return beans.get(beanName);
  }
  public static Object getBean(String beanName) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
    Object bean = null;
    String property = properties.getProperty(beanName);
     bean = Class.forName(property).newInstance();
    return bean;
  }
}

在这里插入图片描述

4、Spring工厂中的类结构图

在这里插入图片描述
BeanFactory与ApplicationContext
在这里插入图片描述

5、Spring中Bean的创建方式、作用范围、生命周期

(Bean的创建方式)
使用默认构造函数创建在这里插入图片描述
使用普通工厂中的方法创建
在这里插入图片描述
使用工厂中的静态方法创建对象
ng)
(Bean的作用范围)
Bean标签的scope属性singleton、prototype、request、session、gloabl-session
在这里插入图片描述
(Bean的生命周期)
init、destroy
在这里插入图片描述

6、Spring中的依赖注入

在这里插入图片描述
(构造函数注入)
constructor-args
在这里插入图片描述
在这里插入图片描述
(set方法注入)
property标签
在这里插入图片描述
(复杂类型注入)
在这里插入图片描述

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值