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

附上常用配置:

  

转载于:https://www.cnblogs.com/Zs-book1/p/11361034.html

springboot学习笔记1:springboot入门相关推荐

  1. SpringBoot学习笔记(4)----SpringBoot中freemarker、thymeleaf的使用

    1. freemarker引擎的使用 如果你使用的是idea或者eclipse中安装了sts插件,那么在新建项目时就可以直接指定试图模板 如图: 勾选freeMarker,此时springboot项目 ...

  2. SpringBoot学习笔记(9)----SpringBoot中使用关系型数据库以及事务处理

    在实际的运用开发中,跟数据库之间的交互是必不可少的,SpringBoot也提供了两种跟数据库交互的方式. 1. 使用JdbcTemplate 在SpringBoot中提供了JdbcTemplate模板 ...

  3. SpringBoot学习笔记(16)----SpringBoot整合Swagger2

    Swagger 是一个规范和完整的框架,用于生成,描述,调用和可视化RESTful风格的web服务 http://swagger.io Springfox的前身是swagger-springmvc,是 ...

  4. 【Springboot学习笔记】SpringBoot+Mybatis+Thymeleaf+Layui数据表单从零开始实现按条件模糊分页查询的方法

    [Springboot学习笔记]SpringBoot+Mybatis+Thymeleaf+Layui数据表单从零开始实现按条件模糊分页查询的方法 目录 1.搭建环境 1.1直接从网上下载SpringB ...

  5. springboot学习笔记-5 springboot整合shiro

    shiro是一个权限框架,具体的使用可以查看其官网 http://shiro.apache.org/  它提供了很方便的权限认证和登录的功能. 而springboot作为一个开源框架,必然提供了和sh ...

  6. SpringBoot 学习笔记

    SpringBoot 学习笔记 文章目录 SpringBoot 学习笔记 1. SpringBoot简介 1.1 什么是Spring 1.2 Spring 是如何简化Java开发的 1.3 什么是 S ...

  7. SpringBoot学习笔记(8):事物处理

    SpringBoot学习笔记(8):事物处理 快速入门 在传统的JDBC事务代码开发过程中,业务代码只有一部分,大部分都是与JDBC有关的功能代码,比如数据库的获取与关闭以及事务的提交与回滚.大量的t ...

  8. 108页《SpringBoot 学习笔记完整教程》PDF附下载

    今天Hydra分享给大家一本108页的<SpringBoot 学习笔记完整教程>,从SpringBoot的基本入门使用,到搭建项目进行代码实战,最终研究底层实现原理,基本涵盖了各个环节,可 ...

  9. SpringBoot(学习笔记)

    SpringBoot学习笔记 从今天开始就进入微服务阶段 一些小问题 1.HelloWorld 1.1回顾什么是Spring 1.2什么是SpringBoot 1.3微服务架构 2.第一个Spring ...

  10. springboot学习笔记:12.解决springboot打成可执行jar在linux上启动慢的问题

    springboot学习笔记:12.解决springboot打成可执行jar在linux上启动慢的问题 参考文章: (1)springboot学习笔记:12.解决springboot打成可执行jar在 ...

最新文章

  1. 许可证无效_未取得预售许可证所签买房合同是否一概无效?
  2. CentOS 初体验五: SSH远程连接
  3. Python|队列Queue
  4. 常用的方法论-PARR
  5. 如何运行ruby代码
  6. SpringMvc三大组件详解
  7. (新聞) 友達光電 A+種子暑期實習計畫 埋下希望的光電種子 (日記)
  8. HTTP家族详细讲解
  9. Linux 命令(72)—— ulimit 命令(builtin)
  10. cc2530按键流水灯c语言程序,CC2530流水灯程序
  11. xvidcore.dll not found视频播放问题
  12. 界面画好了如何开发软件_如何做儿童类APP?来看英语流利说的实战经验总结!...
  13. java中字符串计算字节长度
  14. 计算机软件ui外观设计专利,GUI外观设计专利申请指南
  15. 学习速写的方法有哪些?如何快速学会速写?
  16. 注册、登录、退出登录
  17. 70. Climbing Stairs. Iter--Sol
  18. 计算机教师继续教育心得,教师继续教育培训个人心得体会(精选6篇)
  19. 迅为嵌入式linux驱动开发笔记(八)—内核定时器
  20. 数据结构003:有效的数独

热门文章

  1. 右键新建中增加新建.md文件
  2. matlab过滤,matlab过滤问题
  3. elf section类型_在 498 行极小 OS 上跑标准 ELF 程序
  4. 信息系统服务器数量设置,《系统下服务器设置与优化.doc
  5. java中所有的类都继承于_Java中所有的类都是通过直接或间接地继承( )类得到的...
  6. 【maven】mvn -pl 指定模块
  7. python 调用mysql_Python中直接在MySQL执行SQL命令
  8. html使两个按钮重叠,div按钮重叠HTML
  9. 2020noi普及组优秀的拆分_吉首市乾元小学荣获北斗领航梦想全国青少年科技实践活动优秀组织奖...
  10. Flink 分别读取kafka和mysql作为source