[工具书]Java学习笔记

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值