• springboot学习笔记


    目录

    概述

    常见的SSM搭建项目弊端

    什么是springboot

    特点

    1.简化部署

    2.简化配置,注解代替xml

    3.简化依赖配置

    4.应用监控

    springboot与springmvc,springcloud关系

    创建springboot项目

    spring4提供的注解

    Spring的发展

    Java配置

    1.核心注解

    @Configuration

    @Bean

    springboot核心

    入口类

    @SpringBootApplication注解

    @SpringBootApplication的属性

    @SpringBootConfiguration

    @EnableAutoConfiguration

    @ComponentScan

    配置文件

    全局配置文件

    自定义配置值

    格式

    普通值,如数字,字符串,布尔

    对象/map类型,即有键值对

    数组,List,Set

    嵌套

    读取指定配置文件配置的值

    @PropertySource(value={"classpath:jdbc.properties"})+@Value

    @ConfigurationProperties(perfix="persion")

    @ImportResource(classpath:xxxx.xml)

    @Import 导入额外的配置信息


    概述

    常见的SSM搭建项目弊端

    上手麻烦,很多框架的初学者根本不知道要从何开始搭建一个项目,对初级开发者很不友好

    配置繁杂,使用一个框架,或者向项目中集成一个插件,要专门学习配置文件,哪怕是细微的配置错误,也会导致无法使用,而且排查起来特别困难,对初级开发者很不友好

    项目需要单独配置容器,编写好的项目还需要自己配置Tomcat运行,又多了一个额外的步骤,一旦配置有问题,又可能要折腾很久,对初级开发者很不友好

    什么是springboot

    spring组件的一站式快速开发框架,避免了众多繁琐的配置,极大的简化了开发者的学习成本,项目搭建成本,对初级开发者十分友好

    特点

    1.简化部署

    内置tomcat,jetty容器,不再需要开发者打成war包部署到容器中,只要打成一个独立的jar就可以独立运行,所有依赖均在一个jar包中

    2.简化配置,注解代替xml

    注解代替xml是spring4.x的核心功能,springboot的配置文件只有一个application.yml,开发者不再需要配置一大堆的xml,properties

    使用一个第三方框架的配置变得十分简单

    3.简化依赖配置

    springboot启动器会将一组依赖打包到一起,作为一个启动器,比如spring-boot-starter-web包含了web开发需要的spring-web,springmvc等依赖

    4.应用监控

    springboot可以监控服务和应用

    springboot与springmvc,springcloud关系

    1.springboot是spring组件的一站式快速开发框架

    2.springmvc是基于spring的mvc框架

    3.springboot是springcloud的基础,springcloud是一站式微服务框架

    创建springboot项目

    1.打开IDEA,创建新项目,选择Spring Initializr,填写路径和项目名,选择maven作为构建工具,选择JDK版本

    2.选择初始化项目时要导入的依赖,这里我们因为是简单演示,只选择了spring-web,有需要可以挨个点开看看哪些是可能用到的,可以一并导入,点击确定即创建项目

    3.配置SDK和maven,等待maven依赖导入完成即可,到这一步,这个springweb项目就创建完成了,我们完全没有配置什么spring文件,springmvc文件

    4.启动项目

    点击main方法的启动按钮,或者使用IDEA上面的启动按钮,就可以使用springboot内置的tomcat容器来启动我们的项目,我们完全没有自己手动打包,配置tomcat去运行

    5.看看我们的pom文件,有一个web项目启动器

    spring-boot-start-parent

    封装好了版本号,提供版本控制,导入它以后,导入其他依赖时不再需要配置version

    spring-boot-starter-web

    springweb核心组件,包含了web项目所需所有核心依赖

    原理是maven依赖的子父关系

    springboot把需要的一类依赖封装好,导入一个依赖就可以应用

    1. org.springframework.boot
    2. spring-boot-starter-parent
    3. 3.1.5
    4. org.springframework.boot
    5. spring-boot-starter-web
    6. 点进去会发现包含多个依赖
    7. org.springframework.boot
    8. spring-boot-starter
    9. 3.1.5
    10. compile
    11. org.springframework.boot
    12. spring-boot-starter-json
    13. 3.1.5
    14. compile
    15. org.springframework.boot
    16. spring-boot-starter-tomcat
    17. 3.1.5
    18. compile
    19. org.springframework
    20. spring-web
    21. 6.0.13
    22. compile
    23. org.springframework
    24. spring-webmvc
    25. 6.0.13
    26. compile

    spring4提供的注解

    Spring的发展

    1.Spring1.X完全通过xml配置

    2.Spring2.X可以使用注解对Bean进行声明和注入

    1.应用的基本配置用xml

    2.业务逻辑中的开发用注解,如service中@Autowire

    3.Spring3.X开始提供了Java配置方式,可以通过Java代码配置

    4.Spring4.X推荐使用Java配置方式

    Java配置

    Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置

    1.核心注解

    @Configuration

    作用于类上,标记该类是一个配置类,相当于以前的xml配置文件

    @Bean

    作用于方法上,相当于xml中的,将方法的返回值交由spring容器管理

    springboot核心

    入口类

    @SpringBootApplication注解

    Spring Boot的核心注解,是一个复合注解,包含@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan三个注解

    @SpringBootApplication的属性

    scanBasePackages:指定扫描包,通常不指定

    exclude:指定不扫描的包,通常不指定

    @SpringBootConfiguration

    后缀是Configuration,没错,这个注解继承了@Configuration,配置注解

    @EnableAutoConfiguration

    开启自动配置,该注解会使Spring Boot根据项目中依赖的jar包自动配置所需要的配置项

    如:我们添加了spring-boot-starter-web的依赖,项目中也就会引入SpringMVC的依赖,Spring Boot就会自动配置tomcat和SpringMVC

    @ComponentScan

    容器扫描自动装配,默认扫描该注解所在类的同级目录及子目录,因此通常把启动类放在项目根目录下

    可以通过basePackages属性配置扫描的目标包,但通常不会这么做

    可以通过excludeFilters属性配置不扫描的包

    配置文件

    spring配置文件为yml或者properties,通常使用yml

    全局配置文件

    springboot全局配置文件可以是application.yml或application.properties,默认放在resources目录下,通常是application.yml

    相比以往的配置方式,采用树形结构,更符合编码习惯,有上千个配置可供选择

    我们不在此处讨论框架的配置,只讨论自定义值的配置

    自定义配置值

    格式

    缩进+冒号后空格

    普通值,如数字,字符串,布尔
    1. name: zhangsan
    2. 注意:
    3. 字符串默认不用加上单引号或者双引号
    4. 使用双引号需要考虑转义,单引号不需要考虑转义
    5. "zs\n ls" zs换行ls
    6. 'zs\nls' zs\nls
    对象/map类型,即有键值对
    1. key:
    2. key: value
    3. key: value
    4. 或者 key:{key: value,key: value}
    5. Person:
    6. name: zhangsan
    7. age: 20
    数组,List,Set
    1. key:
    2. - value
    3. - value
    4. 或者key: [value,value]
    5. 注意:
    6. 用 - 值表示数组中的一个元素
    7. PersonList:
    8. - zhangsan
    9. - lisi
    嵌套
    1. student:
    2. -name: zhangsan
    3. age: 18
    4. -name: lisi
    5. age: 17
    6. 或者:student: [{name: zhangsan,age: 18},{name: lisi,age: 17}]

    读取指定配置文件配置的值

    某些时候,我们有可能针对某个类必须要用到单独的配置文件,把配置的值注入到Bean中,此时可以使用@PropertySource+@Value

    @PropertySource(value={"classpath:jdbc.properties"})+@Value

    1.作用在类上,在该类的范围内,读取指定位置的配置文件

    2.springboot默认只会加载application.yml/application.properties

    3.配置可以为多个,用逗号隔开

    value={"classpath:jdbc.properties","xxx","xxx"}

    4.配置文件有可能找不到,设置ignoreResourceNotFound=true,允许配置文件缺失

    @PropertySource(value={"classpath:jdbc.properties"}, ignoreResourceNotFound=true)

    @Value("${jdbc.url}"),作用在变量上,获取配置项的值给定变量

    1. @PropertySource(value={"jdbc.properties"}, ignoreNotFound=true)
    2. @Value("${jdbc.url}")
    3. private String jdbcUrl;
    4. @Value("${jdbc.driverClassName}")
    5. private String jdbcDriverClassName;
    6. @Value("${jdbc.username}")
    7. private String jdbcUsername;
    8. @Value("${jdbc.password}")
    9. private String jdbcPassword;
    @ConfigurationProperties(perfix="persion")

    用来简化@PropertySource+@Value

    通常作用在配置类上,表示属性自动装配,perfix前缀+该类的属性名,去配置文件中找对应的配置值装配到对应的属性上

    注意:

    前缀的单个单词首字母不能大写

    如果该类的变量上同时使用了@Value,以ConfigurationProperties为准

    使用对象中的数据,要在具体的方法中使用,而不能在类中直接使用,涉及依赖注入的顺序

    1. login
    2. username: zhangsan
    3. password: 123456
    4. @Configuration
    5. public class loginConfig {
    6. private String username;
    7. private String password;
    8. }

    @ImportResource(classpath:xxxx.xml)

    由于springboot只会加载yml和properties,当某个类下必须读取xml配置,就要使用@ImportResource注解

    如果在启动类上使用,就可以读取原本的applicationContext.xml作为项目启动的配置文件

    通常不会这么做

    @Import 导入额外的配置信息

    功能和xml的import一致,其实就是将配置分类,通过不同的配置文件进行配置

    pom启动器依赖包

    SpringBoot提供了绝大多数开发场景的starter pom,只要导入就能通过自动配置消除繁琐的配置

  • 相关阅读:
    云计算对象存储服务
    软件测试的就业前景到底怎么样?
    天猫订单之数据分析与挖掘——分类分析
    ETCD数据库源码分析——gRPC 拦截器
    判断字符串的两半是否相似
    Docker 安装Kafka
    java图书推荐协同过滤算法网站
    生成 小程序 URL Scheme
    oracle服务器存储过程中调用http
    ElasticSearch学习总结(二):ES介绍与架构说明
  • 原文地址:https://blog.csdn.net/qq_41358151/article/details/134500027