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

附上常用配置:

 

 

 

 

 

  

 

posted @ 2019-08-15 22:37  Zs夏至  阅读(200)  评论(0编辑  收藏  举报