springBoot学习笔记初识springBoot

Posted 拐柒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springBoot学习笔记初识springBoot相关的知识,希望对你有一定的参考价值。

初识springboot

约定优于配置

本质上是对系统、类库或框架中的一些东西嘉定一个大众化合理的默认值。
对应的是偏离约定:需要手动配置实体类和表的映射关系。
约定优于配置的好处:大大减少配置项。

springboot

1、springboot starter:他讲常用的依赖分组进行了整合,讲其合并到一个依赖中,这样就可以一次项添加到项目的maven或者gradle中。
springboot starter,起步依赖,就是把具备某种功能的坐标打包到一起,并提供一些默认功能。
2、使编码变得简单,springboot采用javaConfig的方式对Spring进行配置,并提供了大量的注解,极大的提高了工作效率。
3、自动配置:springboot的自动配置特性利用了spring对条件化配置的支持,合理的推测应用所需的bean,并自动化配置他们。
4、使项目部署变得简单,springboot内置了三种servlet容器,tomcat,jetty,undertow,我们只需要java运行环境就可以了。

springboot 初级使用

@SpringBootApplication
public class Springboot01DemoApplication {

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

}
@RestController
public class DemoController {
    @RequestMapping("/demo")
    public String demo(){
        return "hello springboot";
    }
}

springboot热部署插件

添加依赖

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

配置idea中的setting

在这里插入图片描述
勾选该项

之后按下ctrl+shift+alt+/,选择registy

在这里插入图片描述
勾选该项,即可完成热部署插件加载。

配置热部署排除资源
某些资源在更改后不一定需要触发重新启动。例如,Thymeleaf模板可以就地编辑。默认情况下,改变
资源 /META-INF/maven , /META-INF/resources , /resources , /static , /public , 或 /templates 不触发重新启动,但确会触发现场重装。如果要自定义这些排除项,则可以使用该
spring.devtools.restart.exclude 属性。

spring.devtools.restart.exclude=static/**,public/**

全局配置文件

全局配置文件能够对一些默认配置进行修改及自定义配置。

  1. 先去项目根目录找config文件夹下找配置文件件
  2. 再去根目录下找配置文件
  3. 去resources下找cofnig文件夹下找配置文件
  4. 去resources下找配置文件
    注意:
    1、如果同一个目录下,有application.yml也有application.properties,默认先读取 application.properties。
    2、如果同一个配置属性,在多个配置文件都配置了,默认使用第1个读取到的,后面读取的不覆盖前面读取 到的。
    3、创建SpringBoot项目时,一般的配置文件放置在“项目的resources目录下”

Spring Boot 2.4 改进了处理 application.properties 和 application.yml 配置文件的方式,
如果是2.4.0之前版本,优先级properties>yaml
但是如果是2.4.0的版本,优先级yaml>properties

application.properties

自定义配置属性

person.id=1
person.name=zhangsan
person.hobby=打球,睡觉
person.family=son,mother
person.map.k1=v1
person.map.k2=v2
person.pet.type=dog
person.pet.name=小白

@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private int id; //id
    private String name; //名称
    private List hobby; //爱好
    private String[] family; //家庭成员
    private Map map;
    private Pet pet; //宠物
   }

public class Pet {
    private String type;
    private String name;
}

注意:配置文件配置后,在app中获取可能乱码。
在这里插入图片描述
在idea的setting中进行修改,之后删除已有配置文件,重新创建一个新的.properties文件

application.yaml/.yml

server:
  port: 8088
  servlet:
    context-path: /
person:
  id: 1
  name: zhangsan
  map:
    k1: v1
    k2: v1
  hobby: [son,mother]
  family: [son,mother]
  pet:
    type: dog
    name: xiaobai

属性注入

常用注解
@Configuration 声明一个类作为配置类
@Bean 生命在方法上,将方法的返回值加入Bean容器
@Value 属性注入
@ConfigurationProperties(prefix=“xxxx”) 批量属性注入(通过set方法注入)
@PropertuSource("/classpath:/jdbc.properties") 指定外部属性文件。在类上添加

ConfigurationProperties第三方jar包注入

可以在@Bean标注的方法上添加@ConfigurationProperties来实现第三方jar包注入
application.properties

another.enabled=true
another.remoteAddress=192.168.1.11
@Configuration
public class MyService {
    @Bean
    @ConfigurationProperties(prefix = "another")
    public AnotherComponent anotherComponent(){
        return new AnotherComponent();
    }
}

松散绑定

springboot 使用一些宽松的骨子额将环境属性绑定到@ConfigurationProperties bean,因此环境属性名和bean属性名之间不需要完全匹配。

@Configuration
@EnableConfigurationProperties(OwnerProperties.class)
@ConfigurationProperties("acme.my-person.person")
public class OwnerProperties {
    private String fistName;
}
acme:
  my-person:
    person:
      fist-name: 泰森
属性文件中配置说明
acme.my-project.person.first-name羊肉串模式case, 推荐使用
acme.myProject.person.firstName标准驼峰模式
acme.my_project.person.first_name下划线模式
ACME_MYPROJECT_PERSON_FIRSTNAME大写下划线,如果使用系统环境时候推荐使用

以上是关于springBoot学习笔记初识springBoot的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot学习——Spring Boot简介

SQL Server 2012学习笔记- - - 初识篇

助力SpringBoot自动配置的条件注解ConditionalOnXXX分析--SpringBoo

初识SpringMVC

初识springboot

python学习笔记:1.初识python