chaoz的杂货铺

生命有息、学无止境、折腾不止

0%

java-spring

注解

@ApiOperation注解说明

首先@ApiOperation注解不是Spring自带的,它是是swagger里的
注解@ApiOperation是用来构建Api文档的
@ApiOperation(value = “接口说明”, httpMethod = “接口请求方式”, response =
“接口返回参数类型”, notes = “接口发布说明”;其他参数可参考源码;

@PostMapping

映射一个POST请求
Spring MVC新特性
提供了对Restful风格的支持

@GetMapping,处理get请求
@PostMapping,处理post请求
@PutMapping,处理put请求
@DeleteMapping,处理delete请求
@PatchMapping,

1
2
3
@PostMapping(value = "/user/login")
等价于
@RequestMapping(value = "/user/login",method = RequestMethod.POST)

ApiImplicitParams、ApiImplicitParam

在开发过程中,我们会使用到swagger,其中有许多的注解,这里介绍一下注解@ApiImplicitParams

注解功能:备注入参的中英文名称,配置必读、参数形式等,如下:

1
2
3
4
@ApiImplicitParams({
@ApiImplicitParam(value = "Id", name = "Id", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(value = "名称", name = "name", required = true, dataType = "String", paramType = "query")
})

其中内部参数功能:
value :备注输入参数名称(中文)
name:备注输入参数名称(英文)
required :该入参是否必填
dataType:该入参的数据类型
paramType :前台接口调用时url 参数形式

如:query 的形式:getUser?user =admin
path的形式:getUser/user/admin

@Controller、@Service、@Repository、@RestController

Spring 2.5 在 @Repository的基础上增加了功能类似的额外三个注解:@Component、@Service、@Constroller,它们分别用于软件系统的不同层次:

@Component 是一个泛化的概念,仅仅表示一个组件 (Bean) ,可以作用在任何层次。
@Service 通常作用在业务层,但是目前该功能与 @Component 相同。
@Constroller 通常作用在控制层,但是目前该功能与 @Component 相同。

@Controller 控制器(注入服务)
用于标注控制层,相当于struts中的action层
@Service 服务(注入dao)
用于标注服务层,主要用来进行业务的逻辑处理
@Repository(实现dao访问)
用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件
@Component (把普通pojo实例化到spring容器中,相当于配置文件中的 )
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。

Spring的注解形式:@Repository、@Service、@Controller,它们分别对应存储层 Bean,业务层 Bean,和展示层 Bean。

@Repository注解修饰哪个类,则表明这个类具有对对象进行CRUD(增删改查)的功能,而且@Repository是@Component注解的一个派生品,所以被 @Repository注解的类可以自动的被 @ComponentScan 通过路径扫描给找到。(这也在一定程度上解释了,为什么被 @Repository注解的类也能 @Autowired)

@Controller和@RestController的区别?

官方文档:
@RestController is a stereotype annotation that combines @ResponseBody and @Controller.
意思是:
@RestController注解相当于@ResponseBody + @Controller合在一起的作用。

1)如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。

例如:本来应该到success.jsp页面的,则其显示success.
2)如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
3)如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

@Autowired

@Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法。在使用@Autowired之前,我们对一个bean配置起属性时,是这用用的
<property name="属性名" value=" 属性值"/>
通过这种方式来,配置比较繁琐,而且代码比较多。在Spring 2.5 引入了 @Autowired 注释

@RequestBody和@RequestParam

Hibernate JPA中@Transient、@JsonIgnoreProperties、@JsonIgnore、@JsonFormat、@JsonSerialize等注解解释

  • 问题由来:
    springboot项目中定义了很多类,我们在rest返回中直接返回或者在返回对象中使用这些类,spring已经使用jackson自动帮我们完成这些的to json。但是有时候自动转的json内容太多,或者格式不符合我们的期望,因此需要调整类的to json过程,或者说希望自定义类的json过程。
  • 解决办法:
    使用@JsonIgnoreProperties、@JsonIgnore、@JsonFormat。
    @JsonIgnore注解用来忽略某些字段,可以用在变量或者Getter方法上,用在Setter方法时,和变量效果一样。这个注解一般用在我们要忽略的字段上。
    @JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段。这个注解还可以指定要忽略的字段,例如@JsonIgnoreProperties({ “password”, “secretKey” })
    @JsonFormat可以帮我们完成格式转换。例如对于Date类型字段,如果不适用JsonFormat默认在rest返回的是long,如果我们使用@JsonFormat(timezone = “GMT+8”, pattern = “yyyy-MM-dd HH:mm:ss”),就返回”2018-11-16 22:58:15”

思考

注册登陆怎么实现的?微服务之间怎么授权的?三方授权登陆是怎么结合的?

sessionid是怎么干啥的?你知道多少?

喜欢这篇文章?打赏一下作者吧!

欢迎关注我的其它发布渠道