zoukankan      html  css  js  c++  java
  • springboot学习笔记1:springboot入门

    1.什么是springboot

    springboot是spring生态圈的一个轻量级的框架,换句话说springboot就是spring,是spring的一个衍生版本。

    使用spring框架,项目搭建完毕,spring无法实现任何代码,也就是需要开发人员自己去配置连接数据库,配置需要集成的框架mybatis,shiro等,以及对集成进来的框架进行xml配置,需要开发人员自己编写配置文件,自己进行整合。

    springboot框架其实就是已经集成好的框架的spring,就像是maven集成了很多的jar包一样,springboot继承好了很多的框架,在使用时,直接根据springboot提供的标准编写即可,不在需要配置xml文件。maven的思想是:约定优于依赖,springboot的思想是:约定优于配置。springboot官方给出的解释就是干掉xml文件,使用java代码进行编写配置。

    面试题:如何区分轻量级重量级?

    在项目中轻量级的框架会对自己项目中的代码有很少的侵入,如:

    hibernate:自动生成sql语句,使用hql编辑sql语句,如果有一天不使用这个框架了,那么就需要再自己写sql语句

    mybatis:不使用该框架时,里面的sql语句仍然可以使用

    2.为什么要使用springboot?

    傻瓜式开发,减少了大量的配置,降低了开发人员的标准,低层次的开发人员也可以进行业务逻辑的编写,无需知道内部运行原理以及框架的集成和整合。

    4.怎样使用springboot?

    目标:使用springboot在浏览器显示hello world!

    准备,创建maven工程,引入springboot的依赖:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.zs.springboot</groupId>
        <artifactId>springboot</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <!--将maven工程的父类设置为springboot,就表示该工程时springboot的一个子工程-->
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.6.RELEASE</version>
        </parent>
    
        <dependencies>
            <!--在springboot中会定义很多个starter,每一个starter都有自己不同的作用
                web-start:引入项目所运行的基础环境
                    tomcat:最终springboot会自动把tomcat集成进项目中,不再需要使用外部tomcat进行启动
                    各种注解
                        @Controller
                        @Service
                        @RequestMapping
                        @ResponseBody
            -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
        </dependencies>
    </project>
    pom

    我们点开父工程:

    按住ctrl键点开该父工程可以看到:

     spring-boot-starter-parent 的父工程为 spring-boot-dependencies ,而spring-boot-dependencies是顶级的父工程,是管理springboot的依赖的,只负责管理依赖,就像上一篇maven中的父工程一样,我们点开

    查看父工程,一级一级网上看:

     spring-boot-starter-web的父工程是spring-boot-starters

     spring-boot-starters的父工程是spring-boot-parent

     spring-boot-parent的父工程是spring-boot-dependencies,spring-boot-dependencies只是用来管理jar包的依赖,我们的项目继承了 spring-boot-starter-parent ,而它与parent虽然不一样,但是理论上,它在parent中,因此我们的项目就是与内部的 spring-boot-starter-web一样,是平级的,

    yi用一个图来帮助理解:

    在上面已经继承springboot,引入了依赖,下面开始使用springboot:

    1.编辑启动类@springbootApplication

    package com.zs.springboot;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class ApplicatonRun {
        public static void main(String[] args) {
            SpringApplication.run(ApplicatonRun.class, args);
        }
    }
    /**
    * 1.注意!!!!!!!ApplicationRun类必须要放在所有业务的上一层
    * model包
    * mapper包
    * com.zs.springboot.model
    * com.zs.springboot.mapper
    * 也就是说至少需要把ApplicationRun放在springboot包下
    *
    * 2.就是springboot的入口类
    * 也就是通过这个类启动整个项目
    * @SpringBootApplication:
    * 自动加载springboot所需要额配置
    * 并且把ApplicationRun类标识为整个项目的入口类
    *
    * 3.最终springboot是根据SpringApplication.run()来进行运行的
    * 所需要传递两个参数:
    * ApplicationRun.class
    * 让springboot整个框架知道ApplicationRun类就是整个项目入口类
    * args:main形参
    */

    2.编辑controller:

    /**
     * RestController,相当于controller和responseBody两个注解的合体,使用该注解这个控制器都返回json对象
     */
    @RestController
    public class TestController {
    
        @RequestMapping("/test")
        public String fun1() {
            return "hello world";
        }
    }

    运行,输入地址测试。

    5.springboot的运行原理:

      作用:实现自动配置,

      点开springbootApplication注解,

    可以看到这是一个组合注解:

      @SpringBootConfiguration:springboot所必须要的基础配置,相当于spring中的application.xml

      @EnableAutoConfiguration:允许自动加载配置

      点开EnableAutoConfiguration注解,这也是一个组合注解:

      

        @AutoConfigurationPackage:通过扫描包的形式自动加载,(例如:mybatis的mapper扫描器)

        @Import:导入,与spring配置文件中的improt标签的意思一样,    

            AutoConfigurationImportSelector:

               EnableAutoConfigurationImportSelector:自动加载配置的选择器(根据条件进行自动加载配置)

               继承了AutoConfigurationImportSelector

            AutoConfigurationImportSelector类中有一个方法:

              getCandidateConfigurations():根据某个特定的条件获取配置信息

        

        可以看到loadFactoryNames()方法:通过name属性值来获取加载器信息。点击SpringFactoriesLoader进入,可以看到:

           对源码进行分析:该方法会加载FACTORIES_RESOURCE_LOCATION也就是spring.factries配置文件中的配置信息,然后返回,

            每一个jar包都有一个该文件:

            

            loadFactoryNames()方法通过这个文件来进行加载配置,最后根据factories文件映射到配置类中,如:

              MybatisAutoConfiguration.java是经过xml配置文件转换来的,和xml配置文件一样的作用

    6.配置文件:

      添加myatis依赖后,重启项目会报错?原因:找不到数据源,需要配置数据源

    在springboot中配置数据库:

    配置文件要按照springboot官方规定的形式配置,需要使用yml或properties作为配置文件

    命名有规范,必须使用application作为文件名,否则springboot无法识别

    application.yml或application.properties

    存放位置有规定:
    官方推荐把配置文件放在resources目录(classpath)-->config文件夹
      如果config文件夹springboot没有检测到会从resources目录下去找
      resources:classpath(根目录)
      resources/config

    如图:

    #配置servlet
    #配置端口号
    server.port=8888
    #配置虚拟路径
    server.servlet.context-path=/zs
    
    #配置数据源
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/test
    spring.datasource.username=root
    spring.datasource.password=123456

    附上常用配置:

     

      

  • 相关阅读:
    SqlServer 查看数据库中所有存储过程
    SqlServer 查看数据库中所有视图
    SqlServer 查询表的详细信息
    SqlServer 遍历修改字段长度
    net core 操作Redis
    Tuning SharePoint Workflow Engine
    Open With Explorer
    Download language packs for SharePoint 2013
    Change Maximum Size For SharePoint List Template when Saving
    Six ways to store settings in SharePoint
  • 原文地址:https://www.cnblogs.com/Zs-book1/p/11361034.html
Copyright © 2011-2022 走看看