知识点
配置
- 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后面是分隔符。
框架知识
-
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简单料及
- 导包
com.baidu.disconf
disconf-client
2.6.35
- 进行配置 disconf.properties
- 使用
@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