文章目录
1. 命令行Java -jar参数
-D= : set a system property 设置系统属性。
参数名称 | 用途 | 说明 |
---|---|---|
server.port | 服务端口 | 可以用这个方式,启动多个jar程序,在不同的端口提供服务 |
file.encoding | 文件编码 | 指定文件在页面中使用何种编码显示 |
案例
java -Dfile.encoding=utf-8 -Dserver.port=8090 -jar xxxxx.jar
2. Java特性
2.1 注解
2.1.1 前言
注解现在在SpringBoot中非常好用,在Spring1.x时代,还没出现注解,需要大量xml配置文件并在内部编写大量bean标签。从Spring 2.X开始spring将xml配置中的对象ioc过程转化成了注解。Spring Boot之所以能够轻松地实现应用的创建及与其他框架快速集成,最核心的原因就在于它极大地简化了项目的配置,最大化地实现了“约定大于配置”的原则。
2.1.2 注解扫盲
1.注解是什么?
注解是一种特殊的接口,如果你把注解的class拿去反编译就会知道这一点。我们写注解,本质还是在写一个接口,这是一个特殊的接口。
2.注解里面有什么?
因为注解是一个接口,所以里面可以写方法。当然,是抽象方法。只不过,你的方法名要看起来像是一个属性名。比如,你不要写什么getValue,而应该就写value,这些方法名是注解的属性。
记住这一点,真的很重要,可以让你少走很多弯路。
3.注解什么时候起作用?
注解编写完毕后,可以打在类上,属性上,还有方法上。你需要通过target元注解来声明到底要打在什么地方。然后,你必须要有个地方去读取这个注解,比如springboot框架,在框架里面必然有地方去解析@Controller。
在你启动项目的时候,springboot就去寻找哪些class打了@Controller注解,找到一个就收藏一个,自动帮你new好了存起来。
记住,注解的意义就是在某个时刻被读取,然后做一些事情。如果你自己写了一个注解,却没有任何读取的地方,那你就是在耍流氓。好好的一个类,被你冷不丁打一个@MyAnnotation注解,却没有任何解析的地方,你觉得类能开心吗?
4.保留策略
保留策略是打在注解上的注解,就是告诉你这个注解可以保存到什么时候,我们自己写注解一般是为了方便开发,所以要保留到运行时。
【2.1.2 注解扫盲】出处,摘抄于CSDN博主「上官义飞」的原创文章.
原文链接:https://blog.csdn.net/weixin_36257554/article/details/114752556
2.1.3 用到的注解及说明
注解 | 说明 |
---|---|
@Autowired | 【官方说明】 完成自动装配的工作 【用途】 使用Spring时,通过Spring注入的Bean一般都被定义成private,并且要有getter和setter方法,显得比较繁琐,增加了代码量,而且有时会搞忘造成错误。可以使用@Autowired注解来减少代码量。 在变量上添加@Autowired注解,可去掉相应的getter和setter方法. 另外还有针对构造器和setter方法的注入,还未了解原理,迟些添加 |
@Controller | 【官方说明】声明这是一个控制类 【自用备注】相当于之前的implements Controller,详情见特性比较 |
@RestController | 【官方说明】声明这是一个控制类 【自用备注】相当于之前的implements Controller,详情见特性比较 |
@Component | 【官方说明】实现bean的注入 【自用备注】当作是一个最普通的注解,其他的注解都不是了,好歹要声明这个是Spring可以认得出来的bean吧,那就放一个component吧 |
@Slf4j | 【官方说明】用作日志输出 【自用备注】替代这个语句: private final Logger logger = LoggerFactory.getLogger(当前类名.class); 需要引用以下包才能使用: import lombok.extern.slf4j.Slf4j; |
@TableName | 【自用备注】mybatis-plus中的注解,见比较 |
@Table | 【自用备注】Hibernate中的注解,见比较 |
@ApiOperation | 【自用备注】是swagger的注解,见详情 |
@ApiImplicitParams | 【自用备注】是swagger的注解,见详情 |
@DubboReference | 【自用备注】是dubbo的注解,见详情 |
@DubboService | 【自用备注】是dubbo的注解,见详情 |
3. 一些特性及比较
3.1 @RestController 与 @Controller 注解区别
@RestController
- 一般用于接口 或 前后端分离
- Controller中的方法无法返回jsp,html页面
- 返回的内容就是return 里的内容。
总述,RestController就是专门给前后端或接口使用的,端和端之间传输的数据内容,可返回XML,JSon等装载的信息。
@Controller
- 最早的controller,用于返回页面,使用return "MyController/index"可以返回对应目录下的页面
- 配合@ResponseBody可以返回数据,可以使用return “{xxxx}”;返回JSon或XML而非指定页面
总结:
@RestController 在 Spring MVC 中就是 @Controller 和 @ResponseBody 注解的集合。
@RestController 注解是从 Spring 4.0 版本开始添加进来的,主要用于更加方便的构建 RESTful Web 服务。
所以可以用 @Controller + @ResponseBody 替代@RestController
3.2 @Table VS @TableName
其实比较很简单,一个是属于mybatis的,一个是Hibernate的。作用是一样的就是数据库表映射,不要用混了就行。
3.3 @ApiOperation, @ApiImplicitParams
Swagger是当前最好用的Restful API文档生成的开源项目,通过swagger-spring项目
实现了与SpingMVC框架的无缝集成功能,方便生成spring restful风格的接口文档,
引用:
import io.swagger.annotations.ApiOperation;
@ApiOperation(value="用户登录",notes="这是给用户登录用的")
@ApiImplicitParams({
@ApiImplicitParam(name="mobile",value="手机号",required=true,paramType="form"),
@ApiImplicitParam(name="password",value="密码",required=true,paramType="form"),
@ApiImplicitParam(name="age",value="年龄",required=true,paramType="form",dataType="Integer")
})
@PostMapping("/login")
public AjaxResult login(@RequestParam String mobile, @RequestParam String password,
@RequestParam Integer age){
3.3 @DubboReference, @DubboService
在所作的项目中,发现在代码调用里接口,未指明implement的类,觉得很奇怪,问了同事
9 学习资料
https://www.cnblogs.com/xifengxiaoma/p/11116330.html