[工具书]Java学习笔记
文章目录
- 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
- 一般用于接口 或 前后端分离
- 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
[工具书]Java学习笔记相关推荐
- java学习笔记11--Annotation
java学习笔记11--Annotation Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息. j ...
- java学习笔记13--反射机制与动态代理
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...
- 准备写java学习笔记
准备写java学习笔记 java int 转载于:https://blog.51cto.com/cryingcloud/1975267
- Java学习笔记--StringTokenizer的使用
2019独角兽企业重金招聘Python工程师标准>>> Java Tips: 使用Pattern.split替代String.split String.split方法很常用,用于切割 ...
- java学习笔记12--异常处理
java学习笔记系列: java学习笔记11--集合总结 java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 j ...
- Java学习笔记(十)--控制台输入输出
输入输出 一.控制台输入 在程序运行中要获取用户的输入数据来控制程序,我们要使用到 java.util 包中的 Scanner 类.当然 Java 中还可以使用其他的输入方式,但这里主要讲解 Scan ...
- java学习笔记16--I/O流和文件
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input Output)流 IO流用来处理 ...
- java学习笔记15--多线程编程基础2
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...
- java学习笔记14--多线程编程基础1
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为 ...
最新文章
- Java 20年:JVM虚拟化技术的发展
- 深入浅出 PouchContainer 容器化业务实践 Workshop 开放报名
- MATLAB语言算法实验报告,机械工程实验——matlab实验报告.doc
- pbl和sbl_综合运用PBL和SBL教学法提高眼科带教质量的探索
- PHP3d地球,three.js绘制地球、飞机与轨迹的效果示例
- [转]Asp.Net大型项目实践(11)-基于MVC Action粒度的权限管理【续】【源码在这里】(在线demo,全部源码)...
- linux临时挂载别的文件目录_linux基础05:linux系统目录有哪些?命令行界面如何切换目录?...
- 跨平台异步IO库 libuv 源代码接口详解
- linux删除具有指定内容的文件,Linux bash删除文件中含“指定内容”的行功能示例...
- [推荐]网店代销的卖家,你的宝贝名称修改了吗?
- Premiere视频导出格式
- 【LeetCode】求众数(四种方法)
- Layer2 DAO基础协议Metis与IDO平台Paid Network达成战略合作
- 微软亚洲研究院多模态模型NÜWA:以自然语言创造视觉内容
- wishbone bus
- Stream系列(十二) PartitioningBy方法使用
- html之div整体缩小,如何整体放大或缩小div元素
- 做一个共享浏览器,把seesion克隆到异地实出1号多开(情报通、微信、生意参谋、火币网、腾讯邮箱亲测有效)不是大牌浏览器不敢用!
- C语言基础1:初识C语言(转义、注释;数组、操作符、反码、补码、static、define、指针、结构体常变量;局部变量;作用域、生命周期)
- NLP之文本分类实战入门超详细教程