文章目录

  • 1. 命令行Java -jar参数
  • 2. Java特性
    • 2.1 注解
      • 2.1.1 前言
      • 2.1.2 注解扫盲
      • 2.1.3 用到的注解及说明
  • 3. 一些特性及比较
    • 3.1 @RestController 与 @Controller 注解区别
    • 3.2 @Table VS @TableName
    • 3.3 @ApiOperation, @ApiImplicitParams
    • 3.3 @DubboReference, @DubboService
  • 9 学习资料

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

  1. 一般用于接口 或 前后端分离
  2. Controller中的方法无法返回jsp,html页面
  3. 返回的内容就是return 里的内容。
    总述,RestController就是专门给前后端或接口使用的,端和端之间传输的数据内容,可返回XML,JSon等装载的信息。

@Controller

  1. 最早的controller,用于返回页面,使用return "MyController/index"可以返回对应目录下的页面
  2. 配合@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

[工具书]Java学习笔记相关推荐

  1. java学习笔记11--Annotation

    java学习笔记11--Annotation Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息. j ...

  2. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

  3. 准备写java学习笔记

    准备写java学习笔记 java int 转载于:https://blog.51cto.com/cryingcloud/1975267

  4. Java学习笔记--StringTokenizer的使用

    2019独角兽企业重金招聘Python工程师标准>>> Java Tips: 使用Pattern.split替代String.split String.split方法很常用,用于切割 ...

  5. java学习笔记12--异常处理

    java学习笔记系列: java学习笔记11--集合总结 java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 j ...

  6. Java学习笔记(十)--控制台输入输出

    输入输出 一.控制台输入 在程序运行中要获取用户的输入数据来控制程序,我们要使用到 java.util 包中的 Scanner 类.当然 Java 中还可以使用其他的输入方式,但这里主要讲解 Scan ...

  7. java学习笔记16--I/O流和文件

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理 ...

  8. java学习笔记15--多线程编程基础2

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...

  9. java学习笔记14--多线程编程基础1

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为 ...

最新文章

  1. Java 20年:JVM虚拟化技术的发展
  2. 深入浅出 PouchContainer 容器化业务实践 Workshop 开放报名
  3. MATLAB语言算法实验报告,机械工程实验——matlab实验报告.doc
  4. pbl和sbl_综合运用PBL和SBL教学法提高眼科带教质量的探索
  5. PHP3d地球,three.js绘制地球、飞机与轨迹的效果示例
  6. [转]Asp.Net大型项目实践(11)-基于MVC Action粒度的权限管理【续】【源码在这里】(在线demo,全部源码)...
  7. linux临时挂载别的文件目录_linux基础05:linux系统目录有哪些?命令行界面如何切换目录?...
  8. 跨平台异步IO库 libuv 源代码接口详解
  9. linux删除具有指定内容的文件,Linux bash删除文件中含“指定内容”的行功能示例...
  10. [推荐]网店代销的卖家,你的宝贝名称修改了吗?
  11. Premiere视频导出格式
  12. 【LeetCode】求众数(四种方法)
  13. Layer2 DAO基础协议Metis与IDO平台Paid Network达成战略合作
  14. 微软亚洲研究院多模态模型NÜWA:以自然语言创造视觉内容
  15. wishbone bus
  16. Stream系列(十二) PartitioningBy方法使用
  17. html之div整体缩小,如何整体放大或缩小div元素
  18. 做一个共享浏览器,把seesion克隆到异地实出1号多开(情报通、微信、生意参谋、火币网、腾讯邮箱亲测有效)不是大牌浏览器不敢用!
  19. C语言基础1:初识C语言(转义、注释;数组、操作符、反码、补码、static、define、指针、结构体常变量;局部变量;作用域、生命周期)
  20. NLP之文本分类实战入门超详细教程

热门文章

  1. mqtt session保持 订阅消息_iOS MQTT 3 - 发送订阅消息以及发送过程
  2. 操作系统之哲学原理6----进程通信
  3. android 10 MTK 如何集成系统apk
  4. react中使用echarts的bmap
  5. 离岸开发篇外---从老罗和王自如辩论过程看起--谈谈辩驳的技巧
  6. c#获取其他窗口得内容
  7. 当Transformer遇见偏微分方程求解
  8. 磷酸铁锂电池保护芯片S-8209A系列的应用示例
  9. 【数据库-2】COSMIC遗传资源数据库
  10. 【Genome Biology 2023】EvoAug:通过进化启发的数据增强,提高基因组 DNN 的泛化和可解释性