Spring学习笔记(1)


Spring框架介绍

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

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

  3. Spring有两个核心部分:

    • IOC:控制反转,把创建对象过程交给Spring管理
    • Aop:面向切面,不修改源代码进行功能增强
  4. Spring特点

    • 方便解耦,简化开发
    • Aop编程支持
    • 方便程序测试(junit4)
    • 方便和其他框架及进行整合
    • 方便进行事务操作
    • 降低API开发

入门案例

  1. 导入Spring5相关jar包

    
            
                org.springframework
                spring-beans
                5.2.8.RELEASE
            
            
                org.springframework
                spring-context
                5.2.8.RELEASE
            
            
                org.springframework
                spring-core
                5.2.8.RELEASE
            
            
                org.springframework
                spring-expression
                5.2.8.RELEASE
            
            
                commons-logging
                commons-logging
                1.2
            
        
    
  2. 创建Spring配置文件,在配置文件配置创建的对象

    • Spring配置文件使用xml格式

      <?xml version="1.0" encoding="UTF-8"?>
      
          
          
      
      
      
  3. 编写测试代码

    public class TestDemo {
        @Test
        public void test(){
            //1.加载spring配置文件
            ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
            //2.获得配置创建的对象
            User user = context.getBean("user", User.class);
            System.out.println(user);//com.lxk.User@9a7504c
            user.add();//执行力User类的add方法
        }
    }
    

IOC容器

  1. IOC概念和原理

    • 控制反转,把对象创建和对象之间的调用过程交给Spring进行管理
    • 使用IOC目的:为了耦合度降低
    • 入门案例就是IOC实现
  2. IOC底层原理

    • xml解析,工厂模式,反射

    原始方式:

    image-20220419205813296

    工厂模式:

    image-20220419210012954

    IOC:

    image-20220419210626733

    IOC接口:

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

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

      ? 都可以创建对象

      • BeanFactory:IOC容器的基本实现,是Spring内部的使用接口,不提供给开发人员使用

        *加载配置文件时候不会创建对象,获取(使用)对象时才去创建对象(getBean())

      • ApplicationContext:BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员进行使用

        *加载配置文件时就会把配置文件对象创建

        image-20220419213040231

        前者实现类读取xml配置文件需要绝对路径,后者只要xml文件在 src下直接写xml名

相关