Spring框架概述 (尚硅谷第一部分学习笔记)

Spring框架概述

  1. Spring是轻量级的开源的javaEE框架(外部依赖比较小)

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

  3. Spring 有两个核心部分:IOC和Aop

    (1) IOC:控制反转,把创建对象过程交给spring管理,进行对象的实例化

    (2)Aop:面向切面,不修改源代码的情况下进行功能的增强

  4. Spring特点

    (1)方便解耦,简化开发

    (2)Aop编程支持

    (3)声明式事物的支持 方便事物操作

    (4)方便程序的测试

    (5)方便集成各种优秀框 即方便和其他框架整合

    (6)降低java EE API的使用难度

  5. spring下载地址

    https://repo.spring.io/release/org/springframework/spring/****

IOC容器

  1. 什么是IOC

    (1)控制反转,把我们对象的创建和对象之间调用过程,都交给Spring进行管理

    (2)使用IOC目的,为了降低耦合度

    (3)做入门案例就是IOC实现

  2. IOC底层实现原理

    (1)xml解析,工厂模式,反射 :目的:降低耦合度

    第一步: xml配置文件,配置创建对象
    
    
    第二步:有service类和dao类   创建工程类
    1.创建工厂类XXXFactory 类
    2.String classValue=class属性值//  用xml解析
    3.Class clazz=Class.froName(classValue)//通过反射创建对象
    4.return   (XXXDao)clazz.newInstance();
    
    
    
  3. IOC接口(BeanFactory)

    (1)IOC思想基于IOC容器完成,IOC容器底层就是对象工程

    (2)Spring’提供了IOC容器实现两种方法(两个接口)

    • BeaFactory:

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

      区别:加载配置文件的时候不会去创建对象,在获得对象(使用对象)的时候才会去创建对象

    • ApplicationContext:

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

      区别:加载配置文件时候就会把在配置文件对象进行创建

    (3)ApplicationContext接口实现类:

    • 实现类FileSystemXmlApplicationContext:

              ApplicationContext context=new FileSystemXmlApplicationContext("c\xxx\bean1.xml");
              //区别:是路径是根路径c盘符下开始,即全路径
      
    • 实现类ClassPathXmlApplicationContext:

              ApplicationContext context=new ClassPathXmlApplicationContext("bean1.xml");
              //区别:类路径 
      
  4. IOC操作Bean管理(基于xml方法实现,注解方式实现)

    (1)什么是Bean管理

    • Spring 创建对象

    • Spring注入属性

       private  String UserName;
       //它的set get方法交给Spring处理
      

    (2)Bean管理操作有两种方法

    • 基于xml方法实现

      1.基于xml方式创建对象
      
          
      	(1)在spring配置文件中,使用Bean标签,标签里添加对应的属性,就可以实现对象创建
      	(2)在bean标签有很多属性,介绍常用属性
      		id属性:唯一标识
      		class属性:创建那个类  类的全路径(包类路径)
      		name属性:跟id属性类似  区别就是name值可以有其他符号如'\'
      	(3)创建对象的时候,默认也是执行无参的构造方法
      		
      2.基于xml方式注入属性
      (1)DI:依赖注入,就是注入属性(DI是IOC中一种具体实现,注入属性要在创建对象基础上完成)
      
      3. 第一种注入方式,使用set方法进行注入
      (1)创建类,定义属性和对应的set方法
      public class Book {
      //    创建属性
          private String bname;
          private String bauthor;
      //    创建属性对应的set方法
      
          public void setBname(String bname) {
              this.bname = bname;
          }
      
          public void setBauthor(String bauthor) {
              this.bauthor = bauthor;
          }
      (2)在spring配置文件配置对象属性,在配置文件注入
      	
          
          
              
              
              
          
      
      
      4.第二种注入方式:使用有参数的构造方法注入
      (1)创建一个类 定义属性,创建带参的构造方法
      public class Orders {
          private  String oname;
          private String address;
      
          public Orders(String oname, String address) {
              this.oname = oname;
              this.address = address;
          }
      }
      (2)在spring配置文件中进行配置
       
          
          
              
              
              
          
      5.P名称空间注入
      (1)使用p名称空间注入,可以简化基于xml配置的方式
      第一步  添加p名称空间在配置文件中:xmlns:p="http://www.springframework.org/schema/p
      
      第二步进行属性注入,在bean标签里面进行操作
      
          
         
      
      
  5. IOC操作Bean管理 (xml注入其他属性)

    (1)字面量:

    • ​ null值

      
                  
       
      
    • 属性值包含特殊符号

       
              
              
                  >]]>
                  
              
      

    (2)注入属性外部bean

    • 创建两个类service 和dao类

    • 在service调用dao里面的方法

    • 在spring配置文件中配置

      
              
      
          
          
      
          
      

    (3)注入属性=内部bean和级联赋值

    • 一对多关系:部门和员工

      一个部门可以有多个员工,一个员工可以属于多个部门

      部门是一,员工是多

    • 在实体类之间表示一对多关系,员工表示所属部门,使用对象类型属性进行表示

    • 在spring配置文件中进行配置

       
                  
                  
                  
                  
      
      
              
      
          
              
          
      

      (3) IOC操作Bean管理(xml注入集合属性)

      • 注入以一个数组类型属性

      • 注入一个List集合类型属性

      • 注入一个Map集合类型属性

        (1)创建类,定义数组的list,map set集合,生产对应的get方法
        package com.atguigu.spring5.collectiontype;
        
        import java.util.List;
        import java.util.Map;
        import java.util.Set;
        
        public class Stu {
            //数组类型属性
            private String courses;
            //list集合类型的属性
            private List list;
            //Map集合类型的属性
            private Map maps;
            private Set sets;
        
            public void setCourses(String courses) {
                this.courses = courses;
            }
        
            public void setList(List list) {
                this.list = list;
            }
        
            public void setMaps(Map maps) {
                this.maps = maps;
            }
        
            public void setSets(Set sets) {
                this.sets = sets;
            }
        }
        (2)在spring配置文件中进行配置
        
        
                
            
                
                    
                        英语
                        java课程
                        数据库课程
                    
                
                
                    
                        张三
                        小三
                    
                
        
                
                    
                        
                        
                    
                
                
                    
                        Mysql
                        redis
                    
                
        
        
            
        
        
        • 设置对象类型的值

            
                      
                          
                          
                      
                  
          
              
              
                  
              
              
                  
              
          
          
          • 把注入部分提取出来

            (1)在spring配置文件中引用名称空间util

            
            
            
             
                 易筋经
                 九阴真经
                 九阳神功
             
                
                    
                
            
            

你可能感兴趣的:(spring)