Spring学习

Spring

1.简介

Spring是一个轻量级控制反转(IOC)面向切面(AOP)的容器框架

spring理念:使现有的技术更加容易使用,整合了现有的技术框架。

优点:

  • Spring是一个开源的免费的框架(容器)!
  • Spring是一个轻量级的,非入侵式的框架.
  • 控制反转(IOC)面向切面编程(AOP)
  • 支持事务的处理,对框架整合的支持

其他(先了解):

  • Spring Boot 一个快速开发的脚手架,基于Spring Boot可以快速的开发单个微服务(约定大于配置)
  • Spring Cloud 是基于Spring Boot实现

2.IOC理论推导

IOC本质: 控制反转IOC是一种设计思想,DI(依赖注入)是实现IOC的一种方法。

控制反转就是获得依赖对象的方式反转。

控制反转是一种通过描述(xml或注解)并通过第三方去生产或获取特定对象的方式。在Spring中实现控制反转的是IOC容器,其实现方法是依赖注入。 依赖注入:就是利用set方法来进行注入的。

Spring只需要在xml的配置而文件中进行修改,对象由Spring来创建、管理、装配!

3.IOC创建对象的方式

  1. 使用无参构造创建对象,默认!
  2. 要使用有参构造创建对象。
    • 下标赋值 
      
          
      
    • 类型(不推荐)
    • 参数名 

总结:在配置文件加载的时候,容器中管理的对象就已经初始化了。

4.Spring配置

4.1 Bean配置

id:bean的唯一标识符,也相当于我们学过的对象名

class:bean对象所对应的全限定名:包名+类型

name:别名,而且name可以同时取多个别名

4.2 import

可以将多个配置文件,导入合并一个

规范命名: applicationContext.xml

5.依赖注入

5.1 构造器注入 constructor-arg

5.2 Set方式注入【重点】

依赖注入:Set注入

依赖:bean对象的创建依赖于容器

注入:bean对象中的所有属性,由容器来注入!

  1. 普通注入  
  2. Bean注入 
    
        
    
    
  3. 数组 
    
        
            西游记
            三国演义
            红楼梦
            水浒传
        
    
  4. List 
    
        
            听歌
            敲代码
            看电视
        
    
  5. Map 
    
        
            
            
        
    
  6. Set 
    
        
            LOL
            COC
            BOB
        
    
  7. null 
    
        
    
  8. Properties 
    
        
            location
            ...
            root
            123456
        
    

5.3 拓展注入

使用p命令空间和c命令空间进行注入

注意点:p命令和c命名空间不能直接使用,需要导入xml约束

xmlns:p="http://www.springframework.org/schema/p"

<bean name="john-modern" class="com.example.Person" p:name="John Doe" p:spouse-ref="jane"/>

 xmlns:c="http://www.springframework.org/schema/c"

5.4 bean的作用域

Spring学习_第1张图片

  1. 单例模式(Spring默认机制)
  2. 原型模式:每次从容器中get的时候,都会产生一个新对象 prototype
  3. 其余的request、session、application 这些只能在web开发中使用

6.Bean的自动装配

自动装配是Spring满足bean依赖一钟方式

spring会在上下文中自动寻找,并自动给bean装配属性!

6.1 在Spring中有三种装配的方式

  1. 在xml中显示的设置
  2. 在java中显示配置
  3. 隐式的自动装配bean*
    • bean有个属性autowire
    • byName:会自动在容器上下文中查找,和自己对象set方法后面值对应的bean的id(id唯一)
    • byType:会自动在容器上下文中查找,和自己对象属性类型相同的bean(class唯一)

6.2 使用注解实现自动装配 

  1. 导入约束:context约束 
    查看代码
    
    
    
        
    
    
  2. 配置注解支持:<context:annotation-config/>
  3. 注解说明 
    • @Autowired: 自动装配通过类型或者名字 如果Autowired不能唯一自动装配上属性,则需要通过@Qualifier("xxx");
    • @Resource: 自动装配先通过名字后类型
    • @Nullable: 字段标记了这个注解,则说明这个字段可以为null

你可能感兴趣的:(Spring学习)