lombok |
描述 |
lombok |
消除 POJO 冗长 |
validator |
描述 |
validator |
校验框架 |
mapstruct |
描述 |
mapstruct |
映射框架 |
@Data
public class User {
public String name;
public Integer age;
}
@Data
public class Person {
public String PersonName;
public Integer PersonAge;
}
@Mapper
public interface PersonToUser {
PersonToUser MAPPER = Mappers.getMapper(PersonToUser.class);
@Mappings({
@Mapping(target = "name", source = "PersonName"),
@Mapping(target = "age", source = "PersonAge")
})
User personToUser(User user);
}
public static void main(String[] args) {
User user = new User();
user.setName("xx");
user.setAge(18);
User u = PersonToUser.MAPPER.personToUser(user);
System.out.println(u);
}
自定义注解 |
描述 |
@Target |
@Target表示 Annotation 所修饰的对象范围 |
@Retention |
@Retention表示Annotation声明周期,RUNTIME:运行时保留 |
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Custom{
String value(); //注解的属性,如果只有一个属性,一般叫value
String name() default ""; //属性,默认值"",可以不写
}
spring AOP注解 |
描述 |
@Apsect |
将当前类标识为一个切面 |
@Pointcut |
定义切点,这里使用的是条件表达式 |
如: "execution(* com.travels.controller.AlipayController .groupOrderPay(..))" |
com.travels.controller.AlipayController代表调用类,groupOrderPay(..)代表调用方法,任意参数 |
如:@annotation(com.travels.controller.AlipayController.groupOrderPay) |
匹配注解类 |
@Before |
前置增强,就是在目标方法执行之前执行; |
@AfterReturning |
后置增强,方法退出时执行; |
@AfterThrowing |
有异常时该方法执行; |
@AfterThrowing |
有异常时该方法执行; |
@After |
最终增强,无论什么情况都会执行; |
@Afround |
环绕增强 |
三元表达式 |
描述 |
三元表达式 |
return a>b?a:b |
Lambda表达式 |
描述 |
Lambda表达式 |
允许把函数作为一个方法的参数,简化匿名内部类 |
@FunctionalInterface |
函数式接口:一个接口,然后就是在这个接口里面只能有一个抽象方法,加上了@FunctionInterface只能有一个抽象方法,否则编译器会报错 |
Supplier |
提供者 指定一个泛型并返回 |
Consumer |
消费者 指定一个泛型传入,没有返回值 |
Predicate |
输入参数进行判断,然后返回布尔值 |
Function |
两个参数,T输入 R输出 |
@FunctionalInterface
public interface MyFunctional{
void myFunctional();
}
public class MyFunctionalTest {
public static void main(String[] args) {
MyFunctional myFunctional = () -> System.out.println("myFunctional");
myFunctional.myFunctional();
}
}
@FunctionalInterface
public interface MyFunctional{
String myFunctional(); //有返回值类型
}
public class MyFunctionalTest {
public static void main(String[] args) {
String str = "string";
MyFunctional myFunctional = () -> {return str;};
System.out.println(myFunctional.myFunctional());
}
}
public class SupplierTest {
public static String getString(Supplier<String> supplier) {
return supplier.get();
}
public static void main(String[] args) {
String str = getString(() -> {return "get string";});
System.out.println(str);
}
}
public class ConsumerTest {
public static void consumerTest(String string,Consumer<String> con) {
con.accept(string);
}
public static void main(String[] args) {
String str = "Consumer... ";
consumerTest(str, (String string) -> { System.out.println(str);});
}
}
public class PredicateTest {
public static Boolean check(String string,Predicate<String> pre) {
return pre.test(string);
}
public static void main(String[] args) {
String str = "true";
Boolean bl = check(str, (String string) -> { return true;});
System.out.println(bl);
}
}
public class FunctionTest {
public static int change(String string,Function<String, Integer> fun) {
Integer integer = fun.apply(string);
return integer;
}
public static void main(String[] args) {
String str = "1";
Integer integer = change(str, (String string) -> {return Integer.parseInt(str);});
System.out.println(integer);
}
}
Stream |
描述 |
Stream |
一种链式函数式编程,流终结了就不能再次操作,简化Collection集合操作 |
void forEach(Consumer<? super T> action); |
用来便利,终结方法 |
Stream<T> filter(Predicate<? super T> predicate); |
用于过滤,返回符合条件的元素 |
<R> Stream<R> map(Function<? super T, ? extends R> mapper); |
输入一个参数,返回一个参数 |
long count(); |
终结方法,返回元素个数 |
Stream<T> limit(long maxSize); |
截取前n个元素 |
Stream<T> skip(long n); |
跳过前n个元素 |
public class StreamTest {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.stream()
.filter((String numeral) -> { return numeral.startsWith("1");})
.map((String numeral) -> {return Integer.parseInt(numeral);}).limit(1)
.forEach((Integer numeral) -> {System.out.println(numeral);});
}
}
Filter |
描述 |
Filter |
过滤器 |
init |
初始化 |
doFilter |
拦截 |
destroy |
消耗 |
public class FilterTest implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
Filter.super.init(filterConfig);
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// TODO Auto-generated method stub
}
@Override
public void destroy() {
// TODO Auto-generated method stub
Filter.super.destroy();
}
}
过滤器 |
描述 |
HandlerInterceptor 接口 |
|
HandlerInterceptorAdapter 抽象类 |
Spring MVC封装 |
preHandle |
方法调用前执行 |
postHandle |
方法执行后调用 |
afterCompletion |
请求处理完毕后回调 |
public class HandlerInterceptorTest implements HandlerInterceptor{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// TODO Auto-generated method stub
return HandlerInterceptor.super.preHandle(request, response, handler);
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// TODO Auto-generated method stub
HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub
HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}
}
public class HandlerInterceptorAdapterTest extends HandlerInterceptorAdapter{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// TODO Auto-generated method stub
return super.preHandle(request, response, handler);
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// TODO Auto-generated method stub
super.postHandle(request, response, handler, modelAndView);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub
super.afterCompletion(request, response, handler, ex);
}
}
异常处理 |
描述 |
异常处理 |
@RestControllerAdvice + @ExceptionHandler优化try catch |
public class MyException extends Exception {
/**
*
*/
private static final long serialVersionUID = 1L;
private String message;
/**
* 自定义异常
*
* @param message :异常描述
*/
public MyException(String message) {
this.message = message;
}
}
@RestControllerAdvice
public class ExceptionResponseConfig {
@ExceptionHandler(value = MyException.class)
public Map<String, Object> myExceptionHandler(MyException exception) {
return StateCode.getMap(StateCode.OPERATION_ERROR, exception.getMessage());
}
public void test() throws MyException
{
throw new MyException("自定义异常");
}
}
网友评论