spring注解总结

@RequestBody注解的使用

1、@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。

2.通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上,当然,也可以将其分别绑定到对应的字符串上。

3.在一些特殊情况@requestBody也可以用来处理content-type类型为application/x-www-form-urlcoded的内容,只不过这种方式不是很常用,在处理这类请求的时候,@requestBody会将处理结果放到一个MultiValueMap<String,String>中,这种情况一般在特殊情况下才会使用,
 例如jQuery easyUI的datagrid请求数据的时候需要使用到这种方式、小型项目只创建一个POJO类的话也可以使用这种接受方式

@MapperScan(" ")

用于指定项目中mapper的位置:

例如:@MapperScan("com.gsafety.webmagic.schedule.common.mapper")

@EnableDiscoveryClient与@EnableEurekaClient

都是Eureka注册中心的两种注解,@EnableEurekaClient注解是@EnableDiscoveryClient的实现

参考链接:https://blog.csdn.net/belalds/article/details/80822060

@controller 控制器(注入服务)
@service 服务(注入dao)
@repository dao(实现dao访问)
@component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>)

 

@Order 注解

@Order注解主要用来控制配置类的加载顺序 

/**
 *  初始化启动类
 */
@Component
@Order(value = 1)
public class InitApplicationRunner implements ApplicationRunner {

    @Resource
    private IDynamicTask dynamicTaskImpl;

    @Override
    public void run(ApplicationArguments var1) throws Exception {
        dynamicTaskImpl.initOrRecheckScheduleJob();
    }
}

value属性越小,优先级越高(越先加载)

@EnableScheduling和@Scheduled的使用

定时任务在配置类上添加@EnableScheduling开启对定时任务的支持,在相应的方法上添加@Scheduled声明需要执行的定时任务。 
其中Scheduled注解中有以下几个参数:

  1. cron
  2. zone
  3. fixedDelay和fixedDelayString
  4. fixedRate和fixedRateString
  5. initialDelay和initialDelayString

    1.cron是设置定时执行的表达式,如 0 0/5 * * * ?每隔五分钟执行一次

    2.zone表示执行时间的时区

    3.fixedDelay 和fixedDelayString 表示一个固定延迟时间执行,上个任务完成后,延迟多长时间执行

    4.fixedRate 和fixedRateString表示一个固定频率执行,上个任务开始后,多长时间后开始执行

    5.initialDelay 和initialDelayString表示一个初始延迟时间,第一次被调用前延迟的时间

@Scope 

当设置为prototype时:每次连接请求,都会生成一个bean实例,也会导致一个问题,当请求数越多,性能会降低,因为创建的实例,导致GC频繁,gc时长增加。

设置为单例模式:保证了全局都会有一个实例,对性能有所提高,但是如果实例中有非静态变量时,会导致线程安全问题,共享资源的竞争。

默认是单例模式,即scope="singleton"。另外scope还有prototype、request、session、global session作用域。scope="prototype"多例

@scope默认是单例模式(singleton)

如果需要设置的话@scope("prototype")

1.singleton单例模式,

  全局有且仅有一个实例

2.prototype原型模式,

  每次获取Bean的时候会有一个新的实例

3.request

  request表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效,配置实例:

request、session、global session使用的时候首先要在初始化web的web.xml中做如下配置:

如果你使用的是Servlet 2.4及以上的web容器,那么你仅需要在web应用的XML声明文件web.xml中增加下述ContextListener即可: 

4.session

  session作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效

5.global session

global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个 portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。如果你在web中使用global session作用域来标识bean,那么web会自动当成session类型来使用。

@FeignClient(name= "webmagic-childrenlist-server")

使用HTTP请求远程服务

参考网址:https://www.cnblogs.com/jalja/p/7011439.html

@JSONField注解的使用

FastJson中的注解@JSONField,一般作用在get/set方法上面,常用的使用场景有下面三个:
  • 修改和json字符串的字段映射【name】
  • 格式化数据【format】
  • 过滤掉不需要序列化的字段【serialize】

参考网址:https://www.cnblogs.com/yucy/p/9057049.html

 

@Controller和@RestController的区别?

@RestController注解相当于@ResponseBody + @Controller合在一起的作用。

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

2) 如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
    如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

参考:https://www.cnblogs.com/shuaifing/p/8119664.html

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值