Spring的配置文件,如何配置端口号,,properties,yml获取配置项等方法,外观模式及其优缺点,日志代表的信息

简介: Spring的配置文件,如何配置端口号,,properties,yml获取配置项等方法,外观模式及其优缺点,日志代表的信息

一、回顾

二.如何配置端口号

配置文件,最重要的目的:解决硬编码问题-代码写死

1.常见配置项

使用阶段

Spring配置文件,有三种格式

事实上是:SpringBoot只支持三个文件
1.application.properties
2.application.yaml
3.application.yml  
二和三一致,是一样的,只是后缀名字不一样

1.properties

2.yaml (2和3是一个)

3.yml(yaml,缩写,后缀名字不同而已,现在yml更多)

如果项目中,同时存在properties和yml,properties的优先级更高

企业开发中,通常只使用其中一个文件

配置文件格式

properties(这个key-value的键值对格式):

server.port=8080

#配置数据库连接信息

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test....省略

如何获取配置项:

//properties里面写这个东西
demo.key1=hello.properties
package com.example.demo;
 
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
public class PropertiesController {
//使用@Value注解
    @Value("${demo.key1}")
    private String key1;
    @RequestMapping("readKey")
    public String readKey(){
        return "读取到的配置项key1"+key1;
    }
}

去掉$符号之后,他就不取出来配置项,而是把配置项当成字符串打印了

yml文件格式(把.换成冒号+换行,注意端口号那里有空格,⚠️格式要求比较严格,空格不可以省略)

server:

 port: 8081

要从左边开始写,就像是废物python

 #数据库的相关配置
spring:
  datasource:
    url: jdbc...
    password: root
    username: root

yml获取配置项

demo:

 key1: hello,yml


@RestController
public class YmlController {
    @Value("${demo.key1}")
    public String key1;
    @RequestMapping("/readYml")
    public  String readYml(){
        return key1;
    }
}
多次获取配置项(yml会对我们的参数情况,进行的一定类型转换比如数字10,转换成“10”)
null:使用key后面+-(破折号)
空字符串:key后面之间空着,但是不易读,推荐使用单引号或者双引号扩起来

转义字符
言语可能有些迷惑:慢慢品尝
单引号会对特殊字符进行转义,双引号不会进行转义
原因:\n本身的含义是换行
使用单引号时,内容就表示成了\n,而不是换行,所以认为是转义
使用双引号时候,\n表示成了换行,也就是\n本来的含义(换句话说,他本来就是个女的,你镜子照之后,他还是个女的,你没有那个转义功能)

赋值给对象
package com.example.demo;
 
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
 
@Component
//下面这个的含义是说从配置文件中获取这个student给这个对象赋值
@ConfigurationProperties(prefix = "student")
@Data
public class Student {
    private Integer id;
    private  String name;
    private Integer age;
}
//这个是使用的时候记得要加Autowired
 //@Autowired
   // public Student student;

赋值给集合:

假如不加空格,那么这些会变成一个整体,一起赋值给name,长度变成1了

yml优缺点

优点:可读性高,写法简单,易于理解

可支持更多的数据类型,可以简单的表达对象,数组,List,Map等集合之类的

支持更多的编程语言

缺点:不适合写复杂的配置文件(格式要求严格)

与之带来的功能:

热部署:

写的代码,立即被加载,生效了

热加载:

如果代码发生了变动,就会重新部署

如何实现验证码

客户端和服务端都可以生产

1.后端引入依赖

三、日志代表的信息:

左边是时间,INFO表示级别,3353表示当前的PID

main(进程),com....(打印日志的类),(后面那些是日志内容)

spring帮我们集成了很多的框架

下面是日志的写法

package com.example.captcha1.demos.web;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RestController;
 
import javax.annotation.PostConstruct;
 
@RestController
public class LoggerController {
    //从日志工厂(是一个工厂模式),拿到类一个日志对象,要传一个日志名称
    private  static Logger logger= LoggerFactory.getLogger(LoggerController.class);
//这就是相当于起了个进程名字,但是推荐不要这么起名字,最好是要去找到当前进程。
//    private  static Logger logger= LoggerFactory.getLogger("lcl是大王");
    @PostConstruct
    public void print(){
        System.out.println("打印日志");
        logger.info("__没毛病");
    }
}

选择当前选中的org

打印日志和正常print的区别,一个是正常的打印,另一个是如同spring的信息一样

一般日志的进程名建议是起名为当前类

外观模式(门面模式)

用来定义一个统一的接口,用来访问子系统中的一群接口,主要特征是定义一个高层接口,让子系统更容易去使用(像是我们之前写的图书管理系统),就像是家里的灯,要是有一个总开关,就能一个位置打开所有你想开的灯这种。

优点:

减少了系统的相互依赖,实现了客户端和子系统的耦合关系,这使得子系统的变化不会影响到调用它的客户端。

提高了灵活性,简化了客户端对于子系统的使用难度,客户端无需关心子系统的具体实现方式,而只需要和门面对象交互即可

提高了安全性,可以灵活设定访问权限,不在门面对象中开通方法,就无法访问。

对于设计模式的理解

设计模式是为了解决生活中一些常见的问题的解决方案,就如同象棋中的别人选择当头炮,你选择上马一样,更像是一种套路,模版,可以让我们对身边的问题解决起来更方便。

日志冲突:版本bug,或者是不同框架的bug问题,引入第三方框架还要去不得不去维护多套框架(假如没有日志门面log4j,log4j本身是有他的一套规范,这样我们通过log4j就可以去放心调用)

日志当然也会影响一些性能,所以对于日志,要去适当使用。

日志的级别

日志如何去使用

package com.example.captcha1.demos.web;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RestController;
 
import javax.annotation.PostConstruct;
 
@RestController
public class LoggerController {
    //从日志工厂,拿到类一个日志对象,要传一个日志名称
    private  static Logger logger= LoggerFactory.getLogger("lcl是大王");
    @PostConstruct
    public void print(){
        System.out.println("打印日志");
        logger.info("__没毛病");
        logger.error("我是傻子");
        logger.warn("你是傻子");
        logger.info("我们都不聪明");
        logger.debug("你才傻傻都");
        logger.trace("要不要去放烟花呀");
    }
}

我们可以看到他只显示了INFO以上的,但是INFO以下的没有显示,因为spring的基础设定是INFO普通事件,但是我们该怎么让这样显示呢?我们可以去配置。让他配置成初始debug级别

application.yml(配置文件)

logging:
  level:
    root: debug

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
7月前
|
Java 关系型数据库 MySQL
Spring Boot自动配置:魔法背后的秘密
Spring Boot 自动配置揭秘:只需简单配置即可启动项目,背后依赖“约定大于配置”与条件化装配。核心在于 `@EnableAutoConfiguration` 注解与 `@Conditional` 系列条件判断,通过 `spring.factories` 或 `AutoConfiguration.imports` 加载配置类,实现按需自动装配 Bean。
|
7月前
|
人工智能 Java 开发者
【Spring】原理解析:Spring Boot 自动配置
Spring Boot通过“约定优于配置”的设计理念,自动检测项目依赖并根据这些依赖自动装配相应的Bean,从而解放开发者从繁琐的配置工作中解脱出来,专注于业务逻辑实现。
2525 0
|
6月前
|
前端开发 Java 应用服务中间件
《深入理解Spring》 Spring Boot——约定优于配置的革命者
Spring Boot基于“约定优于配置”理念,通过自动配置、起步依赖、嵌入式容器和Actuator四大特性,简化Spring应用的开发与部署,提升效率,降低门槛,成为现代Java开发的事实标准。
|
7月前
|
存储 缓存 监控
用 C++ 红黑树给公司电脑监控软件的日志快速排序的方法
本文介绍基于C++红黑树算法实现公司监控电脑软件的日志高效管理,利用其自平衡特性提升日志排序、检索与动态更新效率,并结合实际场景提出优化方向,增强系统性能与稳定性。
216 4
|
7月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
1336 5
|
7月前
|
传感器 Java 数据库
探索Spring Boot的@Conditional注解的上下文配置
Spring Boot 的 `@Conditional` 注解可根据不同条件动态控制 Bean 的加载,提升应用的灵活性与可配置性。本文深入解析其用法与优势,并结合实例展示如何通过自定义条件类实现环境适配的智能配置。
397 0
探索Spring Boot的@Conditional注解的上下文配置
|
9月前
|
SQL Apache Windows
Windows服务器80端口被占用的全面解决方案
在服务管理器中启动apache2服务,即可正常使用80端口。若系统中还安装了其他微软产品如sql等,也可尝试停止其服务进行测试,但请注意,SQL通常不会使用80端口,因此一般不会受到影响。以上就是关于80端口被system占用的详细解决方法,希望对你有所帮助。
|
7月前
|
网络协议
端口最多只有65535个,为什么服务器能承受百万并发
服务器通过四元组(源IP、源端口、目标IP、目标端口)识别不同TCP连接,每条连接对应独立socket。数据包携带四元组信息,服务端据此查找对应socket进行通信。只要四元组任一元素不同,即视为新连接,可创建独立socket。资源充足时,单进程可支持百万级并发连接,socket与端口非一一对应。
500 10
端口最多只有65535个,为什么服务器能承受百万并发
|
网络协议 安全 应用服务中间件
云服务器怎么开启被关闭的端口?手把手教你开启端口
在使用云服务器时,若发现某些服务无法访问,可能是端口被关闭。本文介绍了端口关闭的原因、检查方法及开启步骤。原因包括初始设置限制、防火墙规则和外部网络策略;可通过netstat或ss命令检查端口状态,用ufw、iptables或firewalld调整防火墙规则。最后提供了解决常见问题的建议,确保端口正常开放并可供外网访问。
2183 9
|
9月前
|
弹性计算 网络协议 安全
【转】如何配置服务器的端口映射?
本文详解端口映射原理及配置方法,涵盖家庭、企业与云环境,包含静态、动态与双向映射类型,并提供常见问题解决方案。
2077 6