【狂神说java】spring5--学习笔记(持续更新中...)

学习视频(狂神说Java):https://www.bilibili.com/video/BV1WE411d7Dv/?spm_id_from=333.999.0.0&vd_source=cd78676622532a7b3094695537918c1b

spring官网:https://spring.io/

进入官网 – projects – spring Framwork – learn.找到最新版,点开官方文档

1.Spring简介

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

  • 简介
    • 解决企业级开发的复杂性
    • Spring使用的是基本的JavaBean
    • 不局限于Javaweb开发,任何Java应用
    • 使用基本的JavaBean代替EJB
    • Spring是一个轻量级:控制反转(IOC)和面向切面(AOP)的容器框架
    • 开源框架
  • 历史
    • 2002,推出spring雏形,interface21框架
    • 2004年3月24日发布1.0正式版:Spring (以interface21为基础)
    • spring的核心框架springFramework
  • 轮子理论
    • 不要重复的造轮子
  • spring 理论
    • 保持强大的向后性(兼容以前的版本)
    • 使现有技术更加容易使用,本身是一个大杂烩,支持很多东西,整合了现有的技术框架
      • servlet
      • websocket
      • concurrency utilities
      • JSON
      • Bean
      • JPA
      • JMS
      • transactions
      • DAO support
      • JDBC
      • ORM
      • Marshalling XML.
      • web
      • 缓存、调度、流、国际化等等
  • 常见框架
    • SSH: struts2 + spring +Hibernate
    • SSM: SpringMVC + spring + Mybatis
  • 网址
    • 官网: https://spring.io/projects/spring-framework#overview
    • gitHub地址:https://github.com/spring-projects/spring-framework
    • maven: 搜索 spring maven
      • spring-webmvc
      • spring-jdbc
  • 优点
    • 免费、开源的框架(容器)
    • 轻量级(包很小,下载直接用)
    • 非入侵式(引用不会因影响原来项目)
    • 控制反转(IOC)、面向切面编程(AOP)
    • 支持事务处理、对框架整合的支持

2.Spring组成及拓展

  • 组成:7大模块
    • 1.底层支撑: Spring Core
    • 2.Spring AOP
    • 3.Spring ORM (对象关系映射如Mybatis)
    • 4.Spring DAO(对Dao层的支持)
    • 5.Spring Web(webApplicationContext)
    • 6.Spring Context(ui页面的支持、EJB、邮件等的支持)
    • 7.Spring Web MVC(对jsp、servlet的支持)
  • 扩展
    • 现代化Java开发 (基于spring的开发)
    • spring boot (构建一切)
      • 快速开发脚手架,只要做一些简单的配置
      • 基于spring boot可以快速开发单个微服务
      • 约定大于配置
      • 弊端(发展太久,配置太多)
    • spring cloud (协调一切)
      • 基于spring boot实现
    • spring cloud data flow (连接一切)

3.IOC理论推导及本质

IOC是一种思想
DI是IOC的一种实现方法

  • 不用去管理对象的创建了,系统耦合性降低,更关注于业务实现
  • IOC本质
    • IOC是一种思想
    • DI依赖注入是实现IOC的一种方法
    • 所谓控制反转就是获得依赖对象的方式反转了
  • IOC是spring框架的核心内容
    • Spring容器在初始化时先读取配置文件
    • 根据配置文件或元数据创建与组织对象存入容器中
    • 程序使用时再从IOC容器中取出需要的对象
    • 采用XML方式配置Bean的时候,Bean的定义信息是和实现分离的
    • 而采用注解方式可以把两者合为一体
      • Bean的定义信息直接以注解的形式定义在实现类中(零配置)
  • 控制反转
    • 是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式
    • 在spring中实现控制反转的是IOC容器,其实现方法是依赖注入DI

4.Hello Spring

使用spring很便捷,因为框架在背后做了很多事情

  • 实体类
  • 配置文件ApplicationBean.xml
    • 去官网拿配置文件格式(beans文件头)
    • 使用spring来创建对象,在spring中这些都称为Bean
      <bean><property> </property></bean>
  • 实例化容器:拿到spring的容器
    • 提供给ApplicationContext构造函数的一个或多个位置路径的资源字符串
    • 使容器从外部资源加载配置元数据CLASSPATH
    • 获取spring的上下文对象,对象都在spring中管理
          ApplicationContext context = new ClassPathXmlApplicationContext(资源路径)
          context.getBean("配置文件bean的id")
      
    • Java创建对象
      • 传统应用程序的对象是由程序本身创建的,new一个对象
        类型  变量名 = new 类型();
        Hello hello = new Hello();
        
    • spring创建对象
      • spring对象是由spring来创建的
      • 程序本身不创建对象,被动接收对象
            <bean id ="hello" class = "com.test.pojo.Hello">
                <property name="str" value = "spring"/>
            </bean>
        
        • id,相当于变量名
        • class ,类的全路径,相当于new的对象
        • property,相当于给对象设置属性,并赋值
  • 控制
    • 谁来控制对象的创建
    • 传统应用程序的对象是由程序本身控制创建的
    • 使用spring后,对象是由spring来创建的
  • 反转
    • 程序本身不创建对象
    • 变成被动接收对象
  • 依赖注入
    • 利用set方法来进行注入
  • IOC
    • 是一种编程思想,由主动创建变为被动接收
    • 对象由spring来创建、管理、装配
  • ref
    • 引用spring容器中创建好的对象
    • value是普通对象

5.IOC创建对象方式

创建对象在spring中就是创建bean

  • User user = new User();
    • 执行这个的时候会调用User的无参构造方法
  • IOC创建对象的方式
    • 默认实现:使用无参构造创建对象
    • 有参构造
      • 第一种方式,下标
        • index=“0” 表示有参构造的第一个参数
          <constructor-arg index="0" value="测试有参构造下标方式" />
      • 第二种方式,类型
        • 不建议使用,有可能参数类型是一样的
          <constructor-arg type="int" value="测试有参构造类型方式" />
      • 第三种方式,参数名
        • 参数名
          <constructor-arg name="str" value="测试有参构造ref name方式" />
  • spring容器
    • 所有bean在一注册的时候,就被spring实例化了
    • 每个对象在内存中只有一个实例
  • 总结
    • 在配置文件加载的时候,容器中管理的对象就已经初始化了

6.Spring配置说明

  • spring配置
    • 别名alias
      • 如果添加了别名,可以使用别名获取
    • Bean的配置
      • id: bean的唯一标识符,相当于对象名
      • class: 对象类全路径
      • name: 别名,分隔符:逗号、空格、分号
    • import 导入
      • 一般用于团队开发使用,将多个配置文件导入合并为 一个
        <import resource="配置文件名"/>
  • 22
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值