项目中遇到的问题(一)Springboot查缺补漏

知识点

配置

  • server.servlet.context-path:/demo
    项目路径 localhost:8080/demo server.servlet.context-path:默认是/
    注意只需要在url中加上地址,无需再请求中加上地址
  • application.yml与bootstrap.yml的区别
    都是配置 bootstrap优先级高,系统级别的一些参数配置,这些参数一般是不会变动的
    application内容不会覆盖 bootstrap

基础类

时间

  • TemporalAccessor接口
    实例有LocalTime、LocalDate和LocalDateTime
    Instant 多线程安全安全推荐使用

  • ZoneId ZoneId类指定时区标识符, LocalDateTime设置时区

集合

List.addAll 向List集合添加领一个集合的所有元素
List.subList List.subList 有左没有右
String.join(“,”,List/组) 将数组转为字符串 用,隔开
Joiner.on(“,”).join(List/组) 与上面功能一致 on后面是分隔符。

框架知识

  • @Async 异步

  • CommandLineRunner
    -应用服务启动时,需要在所有Bean生成之后,加载一些数据和执行一些应用的初始化。例如:删除临时文件,清楚缓存信息,读取配置文件,数据库连接,这些工作类似开机自启动的概念,CommandLineRunner、ApplicationRunner 接口是在容器启动成功后的最后一步回调(类似开机自启动)。
    在这里插入图片描述

  • ApplicationContextAware
    -ApplicationContextAware 通过它Spring容器会自动把上下文环境对象调用ApplicationContextAware接口中的setApplicationContext方法,我们在ApplicationContextAware的实现类中,就可以通过这个上下文环境对象得到Spring容器中的Bean。

  • 什么时候使用applicationContext.getBean()而不是Autowired

    • 静态属性不能使用Autowired获取 应使用此方式。
    • 单例模式下(默认情况下): Autowired与getBean两种方式没有区别,获取的都是同一个对象。
    • 多例模式下: Autowired是使用的同一个对象,而getBean就是创建的一个新对象。
  • JedisPool 就是一个jedis连接池

  • @SneakyThrows
    -logback的一个注解 因为我们大多是使用try-catch都还是往上抛异常,所以可以使用该注解,就不用写try-catch了,logback自动为我们抛

  • 跨域问题 本质就是同源问题,不同源会被浏览器拦截。(详细的可以看这几篇博客)
    https://blog.moonlet.cn/archives/563
    https://zhuanlan.zhihu.com/p/179281276?utm_source=wechat_session
    https://blog.csdn.net/qq_38128179/article/details/84956552

  • @Scheduled(cron=“”)定时器 需要开启@EnableScheduling

  • @RefreshScope

disconf简单料及

  1. 导包

    com.baidu.disconf
    disconf-client
    2.6.35
  2. 进行配置 disconf.properties
  3. 使用
	@Service
	@Scope("singleton")
	@DisconfFile(filename = "redis.properties")
	@DisconfUpdateService(classes = {JedisConfig.class})
	public class JedisConfig implements IDisconfUpdate {
	  /** Logger */
	    private static Logger log = LoggerFactory.getLogger(JedisConfig.class);
	
	    // 代表连接地址
	    private String host;
	
	    // 代表连接port
	    private int port;
	
	    /**
	     * 地址, 分布式文件配置
	     *
	     * @return
	     */
	    @DisconfFileItem(name = "redis.host", associateField = "host")
	    public String getHost() {
	        return host;
	    }
	
	    public void setHost(String host) {
	        this.host = host;
	    }
	
	    /**
	     * 端口, 分布式文件配置
	     *
	     * @return
	     */
	    @DisconfFileItem(name = "redis.port", associateField = "port")
	    public int getPort() {
	        return port;
	    }
	
	    public void setPort(int port) {
	        this.port = port;
	    }
	
	    /**
	     * 每次更新分布式配置都会调reload方法
	     *
	     * @throws Exception
	     */
	    @Override
	    public void reload() throws Exception {
	        log.info(">>>>>>>>>host: " + host);
	    }
	
	}

接口IDisconfUpdate:需要监听的服务都要实现该接口
注解@DisconfFile:指定分布式配置文件,就是刚才控制台创建的redis.properties
注解@DisconfUpdateService:标识配置更新时需要进行更新的服务,需要指定它影响的配置数据,可以是配置文件或者是配置项,比如这里JedisConfig
注解@DisconfFileItem:分布式的配置文件中的key,比如redis.host

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值