zoukankan      html  css  js  c++  java
  • SpringBoot 学习随笔

    SpringBoot 知识图

    ps: 最下面四个都是中间件技术

    这个里面SpringBoot知识很全(可以查查):

    https://www.cnblogs.com/fishpro/p/10625506.html


    认识SpringBoot


    ssm项目打war包,在Tomcat里面运行

    Springboot,jar包,内嵌Tomcat

    SpringBoot 简化配置,约定大于配置(Maven、Docker也是)


    IDEA快速创建 第一个SpringBoot程序


    创建SpringBoot=>在IDEA里面直接创建,

    选择

    web项目最少需要

    可以看到程序的主入口Application(含main)(不要改动):

    下一步注意,几个文件夹位置都和Application同级别:

        

    然后写个Controller:

        

    然后浏览器访问:

               

    好了,完成了SpringBoot--Web项目的 helloworld !


    pom.xml

    dependencies里面:

      spring-boot-starter-web=》web依赖:Tomcat默认嵌入式容器  dispatcherServlet xml ...

      spring-boot-starter-test=》单元测试

      (Springboot所有的依赖都是spring-boot-starter开头的)


    1)application.properties  (另一种方法是用application.yaml)

      配置端口号:server.port = 8081这样设置端口号

    2)艺术字:www.bootschool.net/ascii 自动生成banner

      在resources下面新建 banner.txt 会直接被识别

    ////////////////////////////////////////////////////////////////////
    //                          _ooOoo_                               //
    //                         o8888888o                              //
    //                         88" . "88                              //
    //                         (| ^_^ |)                              //
    //                         O  =  /O                              //
    //                      ____/`---'\____                           //
    //                    .'  \|     |//  `.                         //
    //                   /  \|||  :  |||//                          //
    //                  /  _||||| -:- |||||-                         //
    //                  |   | \  -  /// |   |                       //
    //                  | \_|  ''---/''  |   |                       //
    //                    .-\__  `-`  ___/-. /                       //
    //                ___`. .'  /--.--  `. . ___                     //
    //              ."" '<  `.___\_<|>_/___.'  >'"".                  //
    //            | | :  `- \`.;` _ /`;.`/ - ` : | |                 //
    //               `-.   \_ __ /__ _/   .-` /  /                 //
    //      ========`-.____`-.___\_____/___.-`____.-'========         //
    //                           `=---='                              //
    //      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
    //                 佛祖保佑           永无BUG                       //
    ////////////////////////////////////////////////////////////////////

    打jar包:

      

      生成的jar包在target里面

    运行jar包:

      

      就可以像IDEA控制台一样运行起来了

      


     Springboot自动装配原理


    pom.xml

    dependencies 核心依赖在里面的<parent>父工程中

    我们在引入springboot依赖的时候,不需要指定版本,就是因为有这些版本仓库

    启动器 starter

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    -web 就帮助自动导入web环境所有依赖

    main主程序

    @SpringBootApplication
    public class HelloworldApplication {
        public static void main(String[] args) {
            SpringApplication.run(HelloworldApplication.class, args);
        }
    }

    @SpringBootApplication

    启动类下的所有资源被导入 

      @EnableAutoConfiguration自动导入包 

        @Import(AutoConfigurationImportSelector.class)自动导包选择器 

          loadSpringFactories():

           spring.factories这个文件里面写了:所有的自动配置类(核心注解@ConditionalOnXXX,只有用户要求的才会导入,这里的全部类中只会导入用户想导入的那部分)



    SpringApplication.run()

      

    图大概看下即可:

       


     yml配置

     


    @ConfigurationProperties 通过prefix来将yaml的值注入到class里面:

     


     

     ${ }  //el表达式



    JSR303校验  @Validated(类之前) +@...(对象之前)

     

     在上方自动生成的import里面可以找到源码位置:

     


     多环境配置&配置文件位置

    配置文件加载顺序(对properties&yaml)

     

    1).properties格式 (看下即可)

    application.properties   (默认环境)

    + 测试环境、开发环境、生产环境...

    application-test.properties   

    application-dev.properties   

    application-prod.properties   

    三个非默认环境,都需要application.properties来设置:

    2).yaml格式()

    application.yaml

    yaml文件一个就搞定,各个环境之间用"- - -"三个横杠分隔


    自动装配原理再理解 

    所有的yaml可以配置的项(官方文档):https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/htmlsingle/

    • xxxxAutoConfiguration():自动配置类,给容器中添加组件 (在META-INF.springfactories中)
    • xxxxProperties.java文件的class,从application.yaml 中获取对应的配置值

    自动装配原理 -总结


     Web开发


    静态资源一般放在resources/static里面


    Thymeleaf模板引擎(jsp同类)

     源码:


     项目实战

    国际化:i18n => internationalization

     就是在i18n里面,三个文件,一个是键、另外两个是键对应的中文、英文


    Interceptor (登录)拦截器

    登录拦截的时候,静态资源不要拦截,否则会比较丑。


    杂碎知识:

     StringUtils.isEmpty()和.equals的运用


    整合数据库

    JDBC

    需要在application.yml里面配置下数据库属性。

    url问号后面3个设置

    (点击username点进去,可以看spring.datasource文件,里面很多设置)


    HikariDataSource号称javaweb当前最快的数据源


    Druid

    数据库连接池实现,结合了C3P0、DBCP、PROXOOL等DB池的优点,

    同时加入了日志监控=》天生就是针对监控而生的DB连接池

     在yml配置中DataSource中加上druid就好了

     yml数据注入config  (prefix作为连接的桥梁标记)

     获取druid后台监控:

    //1、配置管理后台的Servlet
        @Bean
        public ServletRegistrationBean DruidServlet(){
            ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
            Map<String,String> initParams = new HashMap<>();
            //druid后台登录的用户名
            initParams.put("loginUsername","admin");
            //druid后台登录的密码
            initParams.put("loginPassword","111111");
            //默认就是允许所有访问
            initParams.put("allow","");
            bean.setInitParameters(initParams);
            return bean;
        }
    //2、配置监控的filter
        @Bean
        public FilterRegistrationBean druidStatFilter(){
            FilterRegistrationBean bean = new FilterRegistrationBean();
            bean.setFilter(new WebStatFilter());
            Map<String,String> initParams = new HashMap<>();
            initParams.put("exclusions","*.js,*.css,/druid/*");
            bean.setInitParameters(initParams);
            bean.setUrlPatterns(Arrays.asList("/*"));
            return  bean;
        }

    Druid Monitor

    后面自己动手来配置一下

    https://www.jianshu.com/p/fae8fc159270


     Mybatis

     


    权限Shiro

     

    Authentication: 身份认证

    Authorization: 授权

     

    Subject:用户/主体

    SecurityManager:管理所有用户

    Realm:控制数据

    下图是上图的详细版

    流程步骤:

     

     下图对应上图

     


    Spring Security

    授权=》权限分类+每个分类能做的事

     (这里的role不正规,是基于资源的,而不是真正的分级角色)

    认证=》账号密码+权限分类

     

     


    swagger

    首先导入2个maven包:

     

     

    写一个swaggerConfig.java的配置类

     

    http://localhost:8080/swagger-ui.html

     

    给方法,添加注释:

     

     

    正式发布的版本,关闭swagger

    能扫描接口并测试==》直接扫现有的项目代码来调试~~


     Redis

    1)         导入maven依赖

     

    2)         配置类写下

     

    3)然后开始用了:

     

     

     

     

    redis配置模板RedisConfig.java

    在真实的开发中,使用RedisUtils工具类


     分布式RPC:Dubbo

    远程过程调用

     

    Dubbo-admin: 监控管理后台

     

     


    Zookeeper:注册中心


    任务

    异步任务=》多线程


    邮件发送=mailSender


    定时任务=timer

     

     

     

    重点是:-/


    SpringBoot项目结构 

    后端主要是:
    (1)Controller层:
    后端接受前端的请求,先在Controller层拿数据,并进行基本的格式处理
    (2)Service层:
    将符合要求的数据请求传给Service层,进行逻辑上的处理
    (3)Dao层:
    借助mybatis,通过mapper文件夹下的xml文件进行持久层的相关操作

    -----------------------代码层结构-----------------------

    启动类:Application.java(配置和启动引导)
    @SpringBootApplication 开启了Spring组件扫描和SpringBoot的自动配置功能

    数据实体类:domain
    jpa项目
    mybatis项目

    数据接口访问层:Dao
    jpa项目
    mybatis项目

    mapper:mybatis的数据库操作xml文件

    entity:实体类文件(class)

    数据服务接口层:Service
    数据服务实现层:Service Implements

    前端控制器层:Controller

    工具库类:utils
    配置类config
    数据传输对象:dto
    视图包装对象:vo

    src/main/java 程序代码
    src/main/resources 资源

    -----------------------资源目录结构-----------------------
    根目录 resources
    项目配置文件resources/application.yml
    静态资源目录resources/static/ (用于存放前端html css js 图片等)
    视图模板目录resources/templates/
    mybatis映射文件 resource/mapper/
    mybatis配置文件 resource/mapper/config/

  • 相关阅读:
    spark实验四(2)
    spark实验四
    神奇的一天
    Spark实验三
    Scala实验任务三
    Scala实验任务二
    Scala语言实验任务一
    kettle的基本使用
    质量属性之安全性战术
    datax相关
  • 原文地址:https://www.cnblogs.com/qyf2199/p/14524622.html
Copyright © 2011-2022 走看看