• Spring5学习笔记(一)


    关于近日

    之前听说博客园整改,于是便许久未更新博客园,最近偶然回来看了一下,发现整改接近完成,于是我决定将最近的学习笔记上传。

    本次学习笔记全程参考B站尚硅谷idea版Spring5教程

    一、Spring5概述

    1、Spring是轻量级 的开源 的JavaEE框架

    2、Spring可以解决企业应用开发的复杂性

    3、Spring有两个核心部分:IOC和 Aop
    (1)IOC:控制反转,把创建对象过程交给Spring管理(Bean管理、属性注入、各种管理)
    (2)Aop:面向切面,不修改源代码进行功能增强

    Spring的特点

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

    基本思路及实现

    第一步:创建一个User类

    public class User {
        public void add(){
            System.out.println("add");
        }
    }
    

    第二步:创建xml配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <bean id="user" class="day1.spring5.User"></bean>
        
    </beans>
    

    其中,id为自己为该类取的名字,class为类所在的路径
    第三步:测试代码

    @Test
    public void testAdd(){
    
        // 1 加载 Spring 配置文件
        ClassPathXmlApplicationContext context =
                new ClassPathXmlApplicationContext("day1/spring5/bean1.xml");
        // 2 获取配置创建的对象
        User user = context.getBean("user", User.class);
        //此处的参数应该和xml文件中的id相同
        // 3 调用获取配置创建的对象的方法
        user.add();
        // 4 输出创建的对象
        System.out.println(user);
    }
    

    IOC容器

    (1)IOC底层原理
    (2)IOC接口(BeanFactory)
    (3)IOC操作Bean管理(基于xml)
    (4)IOC操作Bean管理(基于注解)
    1、什么是IOC
    (1)控制反转,把对象创建和对象之间的调用过程,交给Spring管理
    (2)使用IOC目的:为了耦合度降低
    (3)做入门案例就是IOC实现
    2、IOC底层原理
    (1)xml解析,工厂模式,反射
    3、来个例子
    为了避免耦合度高的问题,避免一个类因为相关类的路径变化而无法使用。从而提出工厂模式:

    class UserService{
        execute(){
    		UserDao dao = Factory.getDao();
            dao.add();
        }
    }
    
    ---
    class UserDao{
      add(){
        ......
      }
    }
    ---
    //工厂类
    class Factory{
      public static UserDao getDao(){
        return new UserDao();
      } 
    }
    

    通过引入工厂类,解耦,当UserDao变化时,UserService不会受到影响。

    IOC解耦过程解析

    • 第一步:xml配置文件,配置创建对象的类
    <bean id="dao" class="day1.spring5.UserDao"></bean>
    
    • 第二步 基于Service类和Dao类, 创建工厂类
    class UserFactory{
      public static UserDao getDao(){
        String classValue = class属性值; //1  xml解析
        Class clazz = Class.forName(classValue); //2  通过反射创建对象
        return (UserDao)clazz.newInstance();
      }
    }
    

    IOC接口

    1、IOC思想基于IOC容器完成,IOC容器底层就是对象工厂

    2、Spring提供IOC容器两种实现方式:(两个接口)

    (1)BeanFactory:IOC容器的基本实现,是Spring内部的使用接口,不提供开发人员进行使用。
    *加载配置文件时,不会创建对象,只有在获取(使用)对象才去创建对象
    (2)ApplicationContext:BeanFactory接口的子接口,提供更多强大的功能,一般由开发人员使用
    *加载配置文件时候就会把配置文件中所有对象进行创建(下列代码第一步,就是加载配置文件)

     @Test
        public void testAdd(){
            // 1 加载 Spring 配置文件  
            // ********ApplicationContext可以替换为BeanFactory********
            ApplicationContext context =
                    new ClassPathXmlApplicationContext("com/qy/spring5/bean1.xml");
            // 2 获取配置创建的对象
            User user = context.getBean("user", User.class);
            // 3 调用获取配置创建的对象的方法
            user.add();
            // 4 输出创建的对象
            System.out.println(user);
        }
    

    IOC操作管理(xml方式)

    (1)使用bean标签,向里面添加对应属性

    <bean id="user" class="day1.spring5.User"></bean>
    
    • id:唯一标识
    • class:类的路径
      (2)创建对象时默认执行无参数的构造方法。

    注入属性依赖

    • 第一种注入:set方法注入
      Book类
    public class Book {
    
        private String bname;
    
        private String bauthor;
    
        public void setBname(String bname) {
            this.bname = bname;
        }
        public void setBauthor(String bauthor) {
            this.bauthor = bauthor;
        }
        public String getBname() {
            return bname;
        }
        public String getBauthor() {
            return bauthor;
        }
    }
    

    xml配置文件

    <bean id="book" class="com.day1.spring5.Book">
          <property name="bname" value="易经"></property>
          <property name="bauthor" value="达摩老祖"></property>
    </bean>
    

    测试类

    @Test
    public void testBook(){
        // 1 加载Spring配置文件
        ApplicationContext context =
                new ClassPathXmlApplicationContext("com/day1/spring5/bean1.xml");
        // 2 获取配置创建的对象
        Book book = context.getBean("book",Book.class);
        // 3 输出配置创建的对象的属性
        System.out.println("书名:"+book.getBname()+"作者:"+book.getBauthor());
    }
    
    /***************/
    输出:书名:易经作者:达摩老祖
    
  • 相关阅读:
    WeTagger不封号的微信客服工具(一)——预告
    WeSender不封号的微信群发软件(六)——升级:第六版已经完成
    .net core系列(一)
    .net core系列整理收藏
    Ansible Windows模块学习
    Windows配置Ansible Host
    Alembic管理Sqlite3数据库版本
    高端VIPRION实物图
    Calendar 类 set() 方法使用要点
    Java 日期处理工具类
  • 原文地址:https://www.cnblogs.com/Emuaer/p/15088766.html
Copyright © 2020-2023  润新知