SpringBoot编程入门概念了解

SpringBoot的基本概念和开发流程
随着微服务的普及,使用springboot作为微服务开发的一部分,有必要了解其中的一些基本的概念和使用方式,
同时保证可以快速的开发和实现相应的功能。

1.开发方式:

 Java中JDK开发方式: 
       new一个依赖类再调用类实例的方法
      正转: 是程序员进行实例控制,类实例不好统一管理
  Spring  开发方式  :由 Spring来负责控制对象的生命周期和对象间的关系
  IOC/DI是同一个概念的不同角度描述:
   01.依赖注入<Dependency Injection>:
     对象 依赖于 IOC/DI容器,需要IOC/DI容器来提供对象需要的 外部资源
    IOC/DI容器注入对象
   02.控制反转(IOC)<Inversion of Control>
      将设计好的对象交给容器控制--对象被动的等待IoC容器来创建并注入它所需要的资源
   03.创建应用对象之间协作关系的行为称为装配
     依赖注入的本质就是装配,装配是依赖注入的具体行为   
   04.Bean  Spring中的所有对象称为Bean
2.Spring容器中为一个bean配置依赖注入
 注入依赖对象可以采用手工装配或自动装配
   1.手动装配的方式 --手动装配会覆盖自动装配
       一种是在XML文件中,通过在bean节点下配置;
             使用属性的Setter方法注入依赖对象 和 
             使用构造器方法:在配置文件中配置该类的bean,并配置构造器
        另外一种:
             使用注解的方式
                  @Autowired 是自动注入,自动从spring的上下文找到合适的bean来注入 
                     默认按类型装配
                 @Resource  按照名称进行装配
    2.自动装配-4种类型的自动装配
       byName, byType, constructor, autodetect
          <bean id="..." class="..." autowire="byType"/>
    开发中常用的注入
        01.XML配置
        02.注解配置  @Service    @Controller @Repository @Component
        03.Java配置  通过 @Configuration 和 @Bean实现
        04. groovy配置

2. SpringBoot

  https://spring.io/
 https://start.spring.io/
 1.有一个入口类,入口类有一个main方法,
   main方法中使用SpringApplication.run启动Spring Boot的应用项目
         @SpringBootApplication 是Spring Boot项目的核心注解,主要目的是开启自动配置
                  main方法 是作为项目启动的入口
          @SpringBootApplication(eration.class) 关闭特定的自动配置

  01.可以通过 @ ImportResource来加载xml配置
  02.外部配置文件 :properties文件、yaml文件 或者命令行参数
       注入properties文件里的值的方式--
        通过@PropertySource指明properties文件的位置
          通过@Value注入值 --在Spring boot 中直接使用@Value注入即可
    基于类型安全的配置方式
    @ConfigurationProperties 加载properties文件内的配置,通过prefix属性指定配置前缀,location指定位置
 1.pom.xml文件的相关内容
    01.spring-boot-starter
      starter会把所有用到的依赖都给包含进来,避免了开发者自己去引入依赖所带来的麻烦
       不同的starter是为了解决不同的依赖,所以它们内部的实现可能会有很大的差异
     有众多Starter
        Starter通常命名为   spring-boot-starter-{name}   如 spring-boot-starter-web,
                   建议非官方 {name}-spring-boot-starter的格式。
    要在Spring Boot中引入Web MVC的支持时,我们通常会引入这个模块spring-boot-starter-web
2.配置文件 resource
 2.Spring Boot的web开发
 01. spring-boot-starter-web
       嵌入了Tomcat以及Spring MVC的依赖
02.数据持久层框架--
     001  ORM框架
        Hibernate与Mybatis
        @Entity 注解指明这是一个和数据库表映射的实体类
        @ID注解指明这个属性映射为数据库的主键
        @Table  @Column
        @Query
  002..Spring 的事务机制
    提供API开启事务 提交事务以及发生错误的时候回滚
    -- org.springframework.transaction.annotation包
    PlatformTransactionManager接口
    @Transaction
    @EnableTransactionManager 声明开启事务支持
  003.数据缓存 Cache 缓存支持
    org.springframework.cache.CacheManager
    org.springframework.cache.Cache
      @Cacheable @CachePut @CacheEvit
      切换缓存技术
         01.EhCache
         02.Guava
         03.Redis
    004.MongoDB
      @Document 注解映射领域模型和MongoDB的文文档
      @ID
      @Field
     005.批处理
        Spring Batch-- @EnableBatchProcessing
 03.安全控制
    Authentication和Authorization
    安全认证和授权
      用户认证 以及请求授权
 04.异步消息
    消息代理 
    目的地  queue 和topic
      JMS : org.springframework.boot.autoconfigure.jms
    开发-测试与部署 
       测试 @Test  @Ignore
      部署--01.热部署 spring-boot-devtools
              --02.常规部署
                打包-jar 或者war
                运行
              03.云部署-基于Docker

3.注解

Java注解:annotation 关联信息和关联数据的途径和方法
 01.按照运行机制: 源码注解--编译时注解-运行时注解RetentionPolicy.
  2.按照来源:JDK自带的注解--来自第三方的注解<框架上的注解>--自定义注解
  3.
   JDK的注解 @ --编译时注解
   Spring 的  -- @ 运行时注解
  04.自定义注解 
     001. 定义注解
     public @interface {}
        JAVA基本类型 String Class   注解只有一个值的是value()
  002.使用注解
    @<注解名>(成员名=成员值,……)
      注解(Annotation)提供了一种安全的类似注释的机制,
     1.作用范围 包 类 字段 方法 方法的参数 局部变量
     2.生命周期:SOURCE CLASS RUNNING
     3.功能
     003.解析注解:通过反射获取类、函数或者成员上的运行时注解信息,
       从而实现动态控制程序运行的逻辑
        1.使用类加载器加载类2.找到类上的注解isAnnotationPresent3.拿到注解实例4.找打方法上的注解
  5.常见注解
   001.JDK自带的注解    @Override  @Deprecated @Suppvisewarnings
     @Override 告诉编译器 重写
   002. Spring 的注解  @Service  @Autowired @Repository
      Mybatis 的注解 @InserProvider @UpdateProvider @Options       
      4.了解相关
      JSP
           00.JavaBean
           Bean相关配置全部是
                 使用xml配置文件实现的,配置文件--
               使用实现接口来实现
                       使用注解实现bean的注入和管理-- 自动生成一个实例注入
      002.MVC
      @service是处于m,即业务层
      @controller对应的是mvc模式中的c    
            相关类(框架或工具中的类)根据这些信息来决定如何使用该程序元素或改变它们的行为

4. AOP 面向切面编程

        01.基于注解拦截   和  02.基于方法规则拦截
        @Aspect 声明是一个切面 @PointCut  @After @Before @Around
        @Transactional
常见分离
水平分离:展示层 服务层 持久层
垂直分离:模块划分(订单、库存)
切面分离:功能和非功能分离,非功能集中管理
      常用的场景: 权限控制、 缓存控制 、事务控制、审计日志
                          性能监控、 异常处理、分布式追踪                     
    拆分-- 水平拆分和垂直拆分
        水平拆分: service  dao control
        垂直拆分: 模块划分 订单-库存等
         切面分离
            @Aspect  声明切面
               //定义切面 切面的构成
                @Pointcut
                @Before()
        切面表达式
            匹配类的方法   designators
                    匹配方法  execution()      
                    匹配注解  @target()、  @annotation()
                    匹配对象target()
             wildcards  通配符
                     operators   运算符

5.系统框架结构

dao接口层      用于放置封装好的底层数据库访问操作
service接口层  抽象业务及实现,调用dao层
control接口层
entity层       
  uitl 工具类
  config 配置
  doc 文档目录       
pojo   <POJO(Plain Ordinary Java Object)>;
   能够做到维护数据库表记录的persisent object
   完全是一个符合Java Bean规范的纯Java对象,没有增加别的属性和方法
    Service
   配置
      配置、  接口、实现类
    实现业务逻辑。将增删改查整合在一起
Control
  01.业务Controller 方法实现 web
    @RequestMapping("/superadmin")
  统一异常处理 Handler    
MVC全名是Model View Controller,
      是模型(model)-视图(view)-控制器(controller)的
    Entity层
    Dao是数据访问层 就是用来访问数据库实现数据的持久化
    Services 业务逻辑层  - BIZE层
    Action是管理业务(Service)调度和管理跳转
    Controller
      web

6.Spring Boot 整合

1.整合mybatis方式:
        01.使用XML 便于后期优化
        02.使用注解
        03.使用实体类
    mybatis3.4.0开始加入了 @Mapper注解
2.SpringBoot整合Redis
   spring-boot-starter-data-redis
     01. POM文件引入redis依赖
  02. 资源文件对redis进行配置
      Redis数据库默认的索引 spring.redis.database
     Redis服务器地址            spring.redis.host
     连接池最大连接数           spring.redis.pool.max-active=1000
     连接池中最大空闲连接 spring.redis.pool.max-idle=10
     spring.redis.pool.min-idle=2
     spring.redis.pool.max-wait      
     spring.redis.timeout
 03.切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值
    默认使用 0 号数据库  --  数据库索引号 index
       SELECT index 
     redis配置文件中下面的参数来控制数据库总数  database 16 #默认为16个数据库,可以自己更改
     redis下,数据库是由一个整数索引标识,而不是由一个数据库名称
 04.使用redis的工具类

blogroll

social