override

Gson的使用和注解

試著忘記壹切 提交于 2020-04-08 12:11:08
目前比较流行的处理json数据的工具是Jackson和Fastjson,只有少数的公司使用Gson(一些公司对外部插件的安全性要求问题,如某些银行),这里对Gson的使用作个记录。 1、引进Gson jar包 <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.6</version> </dependency> 2、Gson工具类 Q: 直接Gson gson = new Gson; 也是可以使用的,那为什么要自己写Gson工具类呢? A: 写工具类是为了统一处理一些特殊情况,如null值的处理等。 import java.io.IOException; import java.math.BigDecimal; import java.math.BigInteger; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import

分布式04-Spring Cloud Zuul 二 Zuul拦截器

隐身守侯 提交于 2020-04-07 20:49:58
Spring Cloud 整合Zuul见上一篇 https://my.oschina.net/u/4039389/blog/3221637 1.拦截器类型 /** * “pre” 预过滤器 - 在路由分发一个请求之前调用。 * “route” 路由过滤器 - 用于路由请求时调用。 * “post” 后过滤器 - 在路由分发一个请求后调用。 * “error” 错误过滤器 - 在处理请求时发生错误时调用 */ 2.编写拦截器 @Component public class PreFilter extends ZuulFilter { @Override public String filterType () { return "pre" ; } @Override public int filterOrder () { return 0 ; } @Override public boolean shouldFilter () { return true; } @Override public Object run () throws ZuulException { RequestContext ctx = RequestContext. getCurrentContext () ; HttpServletRequest request = ctx.getRequest() ;

MyEclipse中@Override红叉问题

天大地大妈咪最大 提交于 2020-04-07 16:56:40
有时候将其他项目导入的MyEclipse中,会在@Override注释上有红叉,提示你移除到@Override,出现这个错误的原因是你MyEclipse使用的编译器是Jdk1.5,而@Override注释在jdk1.5环境下只能用于对继承类的方法的重写,而不能对实现的接口的方法的重写,这是一个bug,在jdk6.0中已经解决了,这里我们就把MyEclipse编译器改成jdk6.0就行了。 来源: oschina 链接: https://my.oschina.net/u/260828/blog/99924

虚方法,抽象类,重写

徘徊边缘 提交于 2020-04-07 05:28:05
abstract可以修饰classes、methods、properties、indexers和events。如果某个class的声明被abstract修饰,那么就表示这个class用来做为父类的,是要被其他class继承的。如果某个class的成员被修饰为abstract,或者这个class被abstract修饰,那么继承这个class的class必须实现这些成员。 被abstract修饰的class有以下特点: 1、abstract class不能被实例化。 2、abstract class可以包含0个或多个abstract成员。 3、abstract的成员方法,只有成员声明 + “;”,没有方法体。 4、abstract的方法将在非abstract的子类中实现。 5、被abstract修饰的方法不可以再被virtual和static修饰。 6、properties已经被static修饰,它不可以再被abstract修饰。 7、abstract成员可以在子类中通过override修饰符被重写。 如果abstract class继承了接口,就需要把接口中所有的方法实现或者映射成abstract方法。 virtual virtual 关键字用于修改方法或属性的声明,在这种情况下,方法或属性被称作虚拟成员。虚拟成员的实现可由派生类中的重写成员更改。 调用虚方法时

在 EF Core 中 Book 实体在新增、修改、删除时,给 LastUpdated 字段赋值。

不想你离开。 提交于 2020-04-01 05:50:38
直接贴代码: public class MenusContext : DbContext { public static class ColumnNames { public const string LastUpdated = nameof(LastUpdated); } private const string ConnectionString = @"server=(localdb)\mssqllocaldb;database=Restaurant1;trusted_connection=true"; protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder.UseSqlServer(ConnectionString); protected override void OnModelCreating(ModelBuilder modelBuilder) { // shadow state modelBuilder.Entity<MenuItem>().Property<DateTime>(LastUpdated); modelBuilder.Entity<MenuItem>().Property(m => m.Text).IsRequired(

springboot 如何在请求进入controller之前改变body中的值

China☆狼群 提交于 2020-03-30 15:00:52
springboot 如何在请求进入controller之前改变body中的值 拦截器HandlerInterceptorAdapter 通过继承 HandlerInterceptorAdapter 拦截器,可以重写 preHandle 方法,但是在这个方法里直接对 HttpServletRequest 中的body进行更改是无效的。 HttpServletRequest 请求实际上并没有改变。 HttpServletRequestWrapper 请求包装类 通过继承 HttpServletRequestWrapper 可以重写自己的包装类。如: public class MultiReadHttpServletRequestWrapper extends HttpServletRequestWrapper { private String tempBody; public MultiReadHttpServletRequestWrapper(HttpServletRequest request) { super(request); tempBody = AbstractRequestUtils.getRequestBody(request); } @Override public ServletInputStream getInputStream() { final

记一次 “排它锁" 和 "自旋锁" 的简单实现

谁都会走 提交于 2020-03-27 20:49:35
3 月,跳不动了?>>> 记一次 排它锁 和 自旋锁 的简单实现 定义一个lock接口 public interface PutMessageLock { void lock(); void unlock(); } 排它锁实现 使用java自带的 ReentrantLock 即可 public class PutMessageReentrantLock implements PutMessageLock { private ReentrantLock putMessageNormalLock = new ReentrantLock(); // NonfairSync @Override public void lock() { putMessageNormalLock.lock(); } @Override public void unlock() { putMessageNormalLock.unlock(); } } 自旋锁实现 使用 cas + 循环 来实现 public class PutMessageSpinLock implements PutMessageLock { //true: Can lock, false : in lock. private AtomicBoolean putMessageSpinLock = new AtomicBoolean(true)

sealed、new、virtual、abstract与override 总结

≯℡__Kan透↙ 提交于 2020-03-27 09:53:18
1. sealed——“断子绝孙” 密封类不能被继承。密封方法可以重写基类中的方法,但其本身不能在任何派生类中进一步重写。当应用于方法或属性时,sealed修饰符必须始终与override一起使用。 即:密封类不会有子类,所以是“断子绝孙”。 2. new——“你是我的,我是我的” new关键字用于显式隐藏从基类继承的成员。也就是在使用派生类时调用的方式方法是new关键字新定义出来的方法,而不是基类的方法。 在不使用new修饰符的情况下隐藏成员是允许的,但会生成警告。使用new显式隐藏成员会取消此警告,并使用派生类新定义的方法。 即:好比是不用祖宗的东西,而是用自己创造(new)的东西。 3. virtual——“为了子孙后代” virtual关键字用于修改方法或属性的声明,在这种情况下,方法或属性被称做虚成员。虚成员的实现可由派生类中的重写成员更改。 调用虚方法时,将为重写成员检查该对象的运行时类型。将调用大部分派生类中的该重写成员,如果没有派生类重写该成员,则它可能是原始成员。 在默认情况下,方式是非虚拟的。非虚方法不能重写。 不能将virtual修饰符与一下修饰符一起使用:static、abstract和override。 除了声明和调用语法不同外,虚拟属性的行为与抽象方法一样。 在静态属性上使用virtual修饰符是错误的。 通过override修饰符的属性声明

SpringBoot添加拦截器

梦想与她 提交于 2020-03-25 13:08:56
自定义拦截器 package com.company.interceptor;import lombok.extern.slf4j.Slf4j;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@Slf4jpublic class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { log.debug("preHandle method is running"); return true; } @Override public void postHandle(HttpServletRequest request,

浅谈skywalking的spring-webflux-plugin

丶灬走出姿态 提交于 2020-03-24 11:46:49
本文参考原文- http://bjbsair.com/2020-03-22/tech-info/5100/ 序 本文主要研究一下skywalking的spring-webflux-plugin DispatcherHandlerInstrumentation skywalking-6.6.0/apm-sniffer/optional-plugins/optional-spring-plugins/spring-webflux-5.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/spring/webflux/v5/define/DispatcherHandlerInstrumentation.java public class DispatcherHandlerInstrumentation extends ClassInstanceMethodsEnhancePluginDefine { @Override public ConstructorInterceptPoint[] getConstructorsInterceptPoints() { return new ConstructorInterceptPoint[0]; } ​ @Override public