• SpringBoot


    目录

    SpringBoot项目创建

     SpringBoot项目的web应用

     配置文件

     properties

    读取配置文件信息

    value注解产生中文乱码 

    引号的问题

     yml

    yml配置对象

    yml配置集合


    SpringBoot可以简化Spring程序,它使用 “约定大于配置” 的理念让你的项目快速运行起来。

    SpringBoot优点

    1、快速集成框架,SpringBoot提供了启动添加依赖的功能,用于秒级生成各类框架

    2、内置运行容器,无需自己配置Tomcat等web容器,直接运行和部署程序

    3、快速部署项目,无需外部容器即可启动并且运行项目

    4、完全抛弃xml,使用注解和配置来开发

    5、支持更多监控的指标

    SpringBoot项目创建

    使用社区版的idea来创建SpringBoot项目

    1、安装Spring Assistant插件

    File-》settings-》plugins-》搜索Spring Assistant插件安装

    2、创建SpringBoot项目:File-》new Project

     选择初始化Spring服务时,如果是Default,默认从国外拉取配置,可以在custom内输入国内源来配置

     

     3、运行项目

     SpringBoot项目的web应用

    Spring项目只是一个简单的java项目,不可以直接和浏览器关联进行web开发,而SpringBoot项目内置了Tomcat容器,我们可以直接进行web开发

    在文件创建时生成的com.eample.demo的同级目录或者子级目录中创建类, SpringBoot项目不需要使用xml文件设置扫描路径,因为默认com.eample.demo包是扫描路径,在他外面的类是不会注册到容器的(这是SpringBoot的约定)

    1. @Controller//加五大注解之一 让这个类对象注册到Spring框架内
    2. public class Hello {
    3. @ResponseBody //说明返回的是一个String类型的数据,这个数据存放在body内
    4. @RequestMapping("/hello")//设置路由 也就是设置url路径
    5. public String print() {
    6. return "hello SpringBoot";
    7. }
    8. }

    点击运行

     

    RequestMapping注解可以加到类上,也可以加到方法上

     

     配置文件

    用于配置项目中重要的数据,例如:

    1、数据库连接信息(用户名,密码等)

    2、项目端口

    3、日志文件

    4、第三方系统调用的密钥

    配置文件分为两类:系统的配置文件、自定义的配置文件

    配置文件的两种格式:properties和yml

    properties是之前的格式,yml是对properties的升级更新

     创建File,命名application.yml,创建yml文件

     yml和properties可以共存,但是如果更改重复,会以properties为准

    同一目录下存在:application.properties和application.yml时,application.properties优先级>application.yml。

    也就是说,两者同时存在时properties文件会覆盖yml文件。

    properties默认没有提示,可以安装Spring Tools插件

     properties

    默认格式:键值对 key=value

    properties是默认不支持中文的,可以进行修改:settings->输入encoding

     上述设置的是当前文件,还要设置新创建文件

     这时,当前项目的properties不支持中文编码的格式已经成型了,删除properties文件后重新创建,后序文件都支持中文了

    读取配置文件信息

    使用@value注解,@value注解使用”${}“格式读取

    value注解只可以一次读取一个注解信息

    1. @Controller
    2. public class Get {
    3. @Value("${server.port}")
    4. private int port;//读取到的配置信息 会被填充到port变量内
    5. private String name="servlet.port";
    6. @ResponseBody
    7. @RequestMapping("/get")
    8. public String get(){
    9. return name+"="+port;
    10. }
    11. }

    value注解产生中文乱码 

    1. @Controller
    2. public class Get {
    3. @Value("${demo.name}")
    4. private String demo;//读取到的配置信息 会被填充到port变量内
    5. @ResponseBody
    6. @RequestMapping(value = "/get", produces = "application/json;charset=UTF-8")//设置路径 和返回数据的格式
    7. public String get() {
    8. System.out.println(demo);
    9. return demo;
    10. }
    11. }

    发现浏览器输出和打印都是乱码,也就是说在value注解读取时发生乱码了 

    Spring读取application.properties中间默认编码是ISO-8859-1,如果需要中文显示,需要设置spring读取配置设置编码为UTF-8

    方法1、在application.properties中添加如下配置

    1. spring.banner.charset=UTF-8
    2. spring.messages.encoding=UTF-8
    3. spring.http.encoding.charset=UTF-8
    4. spring.http.encoding.force=true
    5. spring.http.encoding.enabled=true
    6. server.tomcat.uri-encoding=UTF-8

    然后settings-》File Encodings-》设置Transparent native-to-ascii conversion为true

     重启后运行,显示中文

    方法2、使用PropertySource注解

    在Controller类的这个位置加上
    @PropertySource(value = “classpath:application.properties”,encoding = “UTF-8”)

    1. @Controller
    2. @PropertySource(value = "classpath:application.properties",encoding = "UTF-8")
    3. public class Get {
    4. @Value("${demo.name}")
    5. private String demo;//读取到的配置信息 会被填充到port变量内
    6. @ResponseBody
    7. @RequestMapping(value = "/get", produces = "application/json;charset=UTF-8")//设置路径 和返回数据的格式
    8. public String get() {
    9. System.out.println(demo);
    10. return demo;
    11. }
    12. }

    方法3、直接使用yml

    yml是默认支持中文的,value读取时不会引起乱码

    1. @Controller
    2. public class Get {
    3. @Value("${demo2.name}")
    4. private String name;//读取到的配置信息 会被填充到port变量内
    5. @ResponseBody
    6. @RequestMapping(value = "/get")//设置路径 和返回数据的格式
    7. public String get() {
    8. System.out.println(name);
    9. return name;
    10. }
    11. }

    引号的问题

     

    1. @Controller
    2. public class Get {
    3. @Value("${Text.name1}")
    4. private String name1;//读取到的配置信息 会被填充到port变量内
    5. @Value("${Text.name2}")
    6. private String name2;//读取到的配置信息 会被填充到port变量内
    7. @Value("${Text.name3}")
    8. private String name3;//读取到的配置信息 会被填充到port变量内
    9. @ResponseBody
    10. @RequestMapping(value = "/get")//设置路径
    11. public String get() {
    12. System.out.println(name1);
    13. System.out.println(name2);
    14. System.out.println(name3);
    15. return "ok";
    16. }
    17. }

     也就是说

    1、字符串默认不需要单引号或者双引号

    2、如果没有引号或是单引号,会自动对特殊字符转义:你好 \n SpringBoot-》你好 \\n SpringBoot

    让\n这个换行符转译为"\n"字符串

    3、如果是双引号,不会对特殊字符转义

     yml

    yml是跨语言的,java,golang,python等都可以使用yml作为配置文件

    yml格式如下

    1. key: value

    中间有一个空格 

    在poperties中连接数据库:

    1. spring.datasource.url=jdbc:mysql://127.0.0.1:3306/Infor?charsetEncoding=utf-8&&useSSL=false
    2. spring.datasource.name=root
    3. spring.datasource.password=123

     yml中连接数据库:

    1. spring:
    2. datasource:
    3. url: jdbc:mysql://127.0.0.1:3306/Infor?charsetEncoding=utf-8&&useSSL=false
    4. name: root
    5. password: 123

    yml表述会比 poperties简单

    另外,yml支持多种数据类型 整形,浮点型,布尔类型,NULL(使用~表示)

    yml配置对象

    1. # 配置对象
    2. Student:
    3. name: 张三
    4. age: 10
    5. # 或者 使用行内写法
    6. Student1: { name: 李四 , age: 20}

    使用@ConfigurationProperties注解读取信息

    1. @Controller//在项目启动时,配置文件的读取 就已经完成了 要加入五大类注解
    2. @ConfigurationProperties(prefix = "Student")//prefix 绑定配置信息的key
    3. // Student是一个类,会生成一个对象,通过Student类的方法来将配置文件的属性填充入对象
    4. public class StudentInfo {
    5. private String name;
    6. private int age;
    7. public String getName() {
    8. return name;
    9. }
    10. public int getAge() {
    11. return age;
    12. }
    13. public void setName(String name) {
    14. this.name = name;
    15. }
    16. public void setAge(int age) {
    17. this.age = age;
    18. }
    19. @Override
    20. public String toString() {
    21. return "Student{" +
    22. "name='" + name + '\'' +
    23. ", age=" + age +
    24. '}';
    25. }
    26. }
    1. @Controller
    2. public class GetStudent {
    3. //配置文件的Student已经存在了 可以根据 属性注入来获取
    4. @Autowired
    5. private StudentInfo studentInfo;
    6. @ResponseBody
    7. @RequestMapping("/student")
    8. public StudentInfo getStudent() {
    9. return studentInfo;
    10. }
    11. }

     报错原因:

    SpringBoot要求配置文件不能使用驼峰式

    解决办法

    在prefix中写出规范形式即可

    例如:Student-》student ; Student_info->student-info

     

     Data注解可以产生getting、setting、toString等方法

    1. @Controller//在项目启动时,配置文件的读取 就已经完成了 要加入五大类注解
    2. @ConfigurationProperties(prefix = "student")//prefix 绑定配置信息的key
    3. @Data
    4. // Student是一个类,会生成一个对象,通过Student类的方法来将配置文件的属性填充入对象
    5. class StudentInfo {
    6. private String name;
    7. private int age;
    8. }

    yml配置集合

    1. # 配置集合
    2. student :
    3. name:
    4. - 张三
    5. - 李四
    6. - 王五

     或者

    student3 : {name: [张三,李四,王五,糖豆] }

    @PostConstruct是java5的时候引入的注解,指的是在项目启动的时候执行这个方法,也可以理解为在spring容器启动的时候执行,可作为一些数据的常规化加载,比如数据字典之类的。

    被@PostConstruct修饰的方法会在服务器加载Servle的时候运行,并且只会被服务器执行一次。

    1. @Data
    2. @Controller
    3. @ConfigurationProperties(prefix = "student")//根据配置信息 创建Student对象
    4. public class Student {
    5. private List name;
    6. }
    1. @Controller
    2. public class ListName {
    3. @Autowired
    4. private Student student;//将Student对象注入
    5. @PostConstruct
    6. public void PostConstruct () {
    7. System.out.println(student.getName());
    8. }
    9. }

  • 相关阅读:
    机器学习基础之《回归与聚类算法(6)—模型保存与加载》
    大厂SQL题3-订单完成率、取消率、排第一
    入门力扣自学笔记207 C++ (题目编号:1758)
    GFS文件系统
    QT6集成CEF3--01 准备工作
    Java到底是值传递还是引用传递【通俗易懂】
    2022年国家高新企业认定申报最全问答-财务数据篇
    国内券商有没有量化交易接口,哪家做的比较好
    【常识】回调函数
    【wiki知识库】09.欢迎页面展示(浏览量统计)SpringBoot部分
  • 原文地址:https://blog.csdn.net/m0_58342797/article/details/127138638