当前位置:   article > 正文

SpringBoot_springboot 转义字符串写法

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<String> 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. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/701544
推荐阅读
相关标签
  

闽ICP备14008679号