乱七八糟

乱七八糟

Levi.u Lv2

乱七八糟

本文档用于记录一些单独写一个文档不够,但是又蛮有意思的一些东西

动态赋值@RequestMapping

比如我们现在有如下需求:

同一套代码有两套配置文件,分别对应项目A和B,需要同一个接口

访问A的时候请求是/testA,访问B的时候请求是/testB

那么这样我们就可以使用#{}来实现这个需求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// 项目类
@Data
@NoArgsConstructor
@Component
public class Project {
// 项目名字
private String pName;
// 该项目的其他信息 这里需要new 否则会是null
private ProjectInfo info = new ProjectInfo();
}

// 项目信息类
@Data
@NoArgsConstructor
public class ProjectInfo {
// 这里先默认写死到这里 可自行改成配置文件读取赋值
private String url = "/testA";
}

// 同样的方法也可以用于Value注解获取
@Value("#{project.info.url}")
private String urlStr;

// controller中请求可以这么写
@PostMapping("#{project.info.url}")
public ResponseBean test(){
return ResponseBean.success("读取成功:"+urlStr);
}

总结:需要Project在容器内,如果多级对象调用,需要有默认无参构造且不为null

pom.xmlscope的解释

通过maven引入的jar包,里面的类,都是已经编译好的字节码,跟runtime或者provided没关系

简单来说,compileruntimeprovided的区别,需要在执行mvn package命令,且打包格式是war之类(而不是默认的jar)的时候才能看出来

通过compileprovided引入的jar包,里面的类,你在项目中可以直接import进来用,编译没问题,但是runtime引入的jar包中的类,项目代码里不能直接用,用了无法通过编译,只能通过反射之类的方式来用

通过compileruntime引入的jar包,会出现在你的项目war包里,而provided引入的jar包则不会

  • 标题: 乱七八糟
  • 作者: Levi.u
  • 创建于 : 1970-01-01 00:00:00
  • 更新于 : 1970-01-01 00:00:00
  • 链接: https://homra.cn/1970/01/01/1970010100/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论