美文网首页
Java知识框架 - Spring

Java知识框架 - Spring

作者: 码畜的快乐源泉 | 来源:发表于2020-03-09 18:04 被阅读0次
  • IoC容器

    • IOC - 控制反转 - 封装内部实现
    • DI - 依赖注入 - 非自己主动初始化依赖
    • 哪些方面的控制被反转了
      • 控制反转 - 获得依赖对象的过程被反转了
      • 依赖注入 - IOC容器在运行期间,动态地将某种依赖关系注入到对象之中
  • AOP面向切面 - 利用反射获取代理类的构造函数,并实例化代理类

    • JDK动态代理 - 根据类加载器和接口创建代理类
    • CGLIB动态代理 - 利用asm开源包
    • 两者区别
      • JDK动态代理是利用【反射】生成一个实现【代理接口】的【匿名类】
      • CGLIB动态代理是利用asm开源包,对代理对象类的【class文件】加载进来,通过修改其【字节码】生成【子类】来处理。
      • JDK动态代理必须基于接口,CGLIB动态代理不需要类实现接口
  • 常用注解

    • @SpringBootApplication - 复合注解、@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan
    • @MapperScan - 支持mybatis组件
    • @ImportResource @Import @PropertySource - 资源导入注解
    • controller层 - @Controller、@RestController、@RequestMapping、@Autowired
    • servcie层 - @Service、@Resource
    • 持久层 - @Repository、@Component、@Transactional
  • 启动原理

    • IOC容器 - BeanDefinition - bean - BeanDefinition,保存bean对象的class类型、是否是抽象类、构造方法和参数。
    • 初始化一个SpringApplication对象 - 通过SpringFactoriesLoader找到spring.factories文件中配置
    • 执行该对象的run方法 - 启动SpringBoot
  • 作用域 - scope、限定了Spring Bean的作用范围

    • singleton - 仅创建一个实例
    • prototype - 创建多个实例
    • request - 每次HTTP请求都会创建一个新的Bean
    • session - 同一个Session共享一个Bean实例
    • global-session - 所有的Session共享一个Bean实例
  • Bean的生命周期


    image.png
  • SpringBoot自动配置原理

    • Spring Boot关于自动配置的源码在spring-boot-autoconfigure-x.x.x.x.jar
    • @SpringBootApplication -> @EnableAutoConfiguration -> @Import(AutoConfigurationImportSelector.class) -> AutoConfigurationImportSelector.selectImports() -> SpringFactoriesLoader.loadFactoryNames() -> 加载META-INF/spring.factories的配置

相关文章

网友评论

      本文标题:Java知识框架 - Spring

      本文链接:https://www.haomeiwen.com/subject/gctmdhtx.html