栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring学习笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring学习笔记

文章目录
  • Spring 概述
  • Spring的特点
  • IOC容器
  • IOC底层原理
      • IOC管理Bean ——工厂Bean(参考工厂模式)
    • Bean的作用域
    • Bean的生命周期
    • Bean的自动装配:
    • IOC操作Bean(基于注解)
    • 注入属性注解:
    • 注入属性注解:

Spring 概述

定义:是j2ee应用程序框架,针对bean的生命周期进行管理的轻量级容器

**轻量级的定义:**jar包少,可以独立使用,不用依赖于第三方

spring提供的两个核心部分:IOC,AOP

IOC:控制反转,把创建对象的过程交给Spring管理

AOP:面向切面,在不修改源代码的前提下就能进行功能的扩增

Spring的特点
  1. 方便解耦,简化开发

  2. AOP面向切面

  3. 声明式事务管理

  4. 方便程序测试

  5. 方便集成各种框架

  6. 对JDBC进行了封装,方便进行事务的操作

  7. Spring源码是非常经典的,很值得学习的

IOC容器
  1. IOC底层原理

  2. IOC接口

  3. IOC操作Bean管理(基于XML)

  4. IOC操作Bean管理(基于注解)

什么是IOC:就是控制反转,把对象的创建和对象之间的方法的调用过程交给spring管理

IOC的目的:解耦

IOC底层原理
  1. XML解析技术,工厂模式,反射
  • 工厂模式:

  • IOC底层原理(2):

    1,XML配置文件,配置创建的对象

    2,创建工厂类

  • IOC底层原理(3)

    1. IOC思想基于IOC容器完成,IOC容器就是一个工厂

      spring提供的两个接口:BeanFactory, ApplicationContext

      BeanFactory:IOC基本实现,一般不提供给开发人员用

      ApplicationContext:BeanFactory的子接口,开发人员一般都使用这个接口

      两个接口的说明:

      • 前者:加载配置文件时不会创建对象
      • 后者:加载文件就创建对象,这说明在服务器启动完毕后,对象也就创建好了,这是它的优势

      ApplicationContext的两个实现类:

      FileSystemXmlApplicationContext(“盘符路径”)

      ClassPathXmlApplicationContext(“src类路径”)

  • set方法注入的配置文件写法:

    
    
    
    
  • 有参函数注入的配置文件写法:

    
    
    
    
  • xml注入其他属性:

    
    
        
    		
        
    
    
    
    
    
    	>]]>>
        
        
    
    
    
    
  • IOC注入外部Bean

    
    
    
    	
    
    
    
    
  • IOC注入内部Bean

    
    	
        
        
    			
    		>
    	
    
    

  • IOC注入集合

    • 注入数组

      
      	
              
                  数学
             	 	英语
              
          
      
      
    • 注入集合

      
      	
              
                  数学
             	 	英语
              
          
      
      
    • 注入Map

      
      	
              
                  
                  
              
          
      
      
    • 在集合里边设置对象类型

      
      	
              
                  
                  
              
          
      
      
      
      
      	
      
      
      	
      
      
IOC管理Bean ——工厂Bean(参考工厂模式)
  1. Spring有两种Bean:普通Bean,工厂bean

普通bean特点:在xml中定义的类型就是返回的类型

工厂bean特点:在xml中定义的类型不一定是返回的类型,它可能充当工厂模式中工厂的作用

如何实现工厂bean:

  1. 创建类
  2. 实现beanFactory接口的方法

工厂bean的具体实现:


有了这个配置以后,利用classPathXMLApplicationContext() 和getBean获得这个对象,同时,在Java里边对应的类:MyBean,要实现BeanFactory这个接口

里边有一个方法:getObject(), 返回工厂Bean里边存放的对象

Bean的作用域

bean的作用域指的是,创建的bean是单例的还是多例的,默认情况下是单例的

如何设置多实例:利用scope属性


解释:当scope = “sington” ,即默认情况,那么创建的bean就是单例的,当scope = “prototype”,创建的bean就是多例的

sington和prototype的又一个区别:当scope = “sington” ,则加载xml文件时就会创建一个对象,当scope=”prototype“时,是在调用getBean方法的时候才会创建一个对象

此外,scope还有request,session作用域,表示bean在request,session中作用,不常用

Bean的生命周期
  1. 通过无参构造器创建bean实例
  2. 为bean属性设置值和其他bean引用(调用set方法)
  3. 调用bean初始化的方法(需要配置)
  4. bean可以使用了(对象获取到了)
  5. 当容器关闭是,调用了bean的销毁方法(需要配置)

此外,在3的前后分别还有两个动作:bean的后置处理器

添加后置处理器:

(1)创建类:实现BeanPostProcessor,实现后置处理器的两个方法:
1,postProcessorBeforeInitialization (在步骤3之前执行)
2.postProcessorBeforeInitialization (在步骤3之后执行)
Bean的自动装配:

什么是自动装配:根据指定装配规则(属性名称或属性类型)

在xml中实现自动装配:




public class Myclass{
	private Dep dep;
    public setDep(Dep dep){
        this.dep = dep;
    }
}


	



此外,autowire还有一个value :“byType”,根据类型来自动装配,道理通byType

IOC操作Bean(基于注解)

Spring针对bean管理中创建对象提供了注解:

  1. @component

  2. @service 多用于Service层

  3. @controller 多用于Controller层

  4. @Repository 多用于DAO层

    解释:上述注解功能相同,都用来创建对象(bean实例)

使用注解来创建对象的步骤:

  1. 导入AOP依赖
  2. 开启组件扫描(告诉Spring什么类需要扫描)(可以用xml文件,也可以用注解方式代替xml文件)
  3. 在类上创建注解

用xml文件来组件扫描:

这个可以扫描service这个类,如果把service去掉,就扫描包下的所有类

组件扫描过滤:

注入属性注解:
  1. Autowire: 根据类型属性自动装配(byType)
  2. Qualifile:根据属性名称注入(byName)
  3. Resource: 可以根据类型和名称注入
  4. Value:注入普通类型

@value的使用方式:

@value(value = “abc”)

0429)]

[外链图片转存中…(img-jQJUVpZL-1651229580432)]

这个可以扫描service这个类,如果把service去掉,就扫描包下的所有类

组件扫描过滤:

[外链图片转存中…(img-cXzWUpXF-1651229580434)]

[外链图片转存中…(img-4dridEEo-1651229580435)]

注入属性注解:
  1. Autowire: 根据类型属性自动装配(byType)
  2. Qualifile:根据属性名称注入(byName)
  3. Resource: 可以根据类型和名称注入
  4. Value:注入普通类型

@value的使用方式:

@value(value = “abc”)

private String name; 此时name的值就是abc

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/848131.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号