springBoot学习笔记初识springBoot
Posted 拐柒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springBoot学习笔记初识springBoot相关的知识,希望对你有一定的参考价值。
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/**
全局配置文件
全局配置文件能够对一些默认配置进行修改及自定义配置。
- 先去项目根目录找config文件夹下找配置文件件
- 再去根目录下找配置文件
- 去resources下找cofnig文件夹下找配置文件
- 去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的主要内容,如果未能解决你的问题,请参考以下文章