一、Spring框架
1、Spring工具类获取注解里面的某个属性的默认值
AnnotationUtils.getDefaultValue(EnableAsync.class, "annotation")
获取某个类上面的是否有指定注解
AnnotationUtils.findAnnotation(clazz, Aspect.class)
2、创建代理
ProxyFactory factory = new ProxyFactory();
TestMethod proxy = (TestMethod) factory.getProxy();
3、Spring工具:加载本路劲下的META-INF里面的文件
AutoConfigurationMetadata autoConfigurationMetadata = AutoConfigurationMetadataLoader.loadMetadata(this.beanClassLoader);
4、Spring里面通过给集合去重:
protected final <T> List<T> removeDuplicates(List<T> list) {
return new ArrayList<T>(new LinkedHashSet<T>(list));
}
5、Springboot启动打印sql
logging:
level:
com.home.ssm.comment.dao: debug # 要改成要打印的sql语句所在的mapper文件所在包路径
6、获取类的父类接口
ClassUtils.getAllInterfacesForClassAsSet(targetClass)
7、集合拷贝的方式
System.arraycopy(specifiedInterfaces, 0, proxiedInterfaces, 0, specifiedInterfaces.length);
8、类型匹配
判断某2个类是否是同一个类型
typeToMatch.isAssignableFrom(type)
比如Spring的源码中:
org.springframework.beans.factory.support.AbstractBeanFactory#isTypeMatch(java.lang.String, org.springframework.core.ResolvableType, boolean)
判断某个BeanName的类型是否和ResolvableType匹配,就用到了这行代码:typeToMatch.isAssignableFrom(type)
9、StringUtils工具类
链接字符串
StringUtils.joinWith(CacheConstants.SEPARATOR,
DataConstants.USER_NO, userNo,
DataConstants.ACC_PRODUCT_NO, accProductNo,
DataConstants.ACC_ROLE_NO, accRoleNo);
10、通过ThreadLocal记录日志
代码来源org.apache.ibatis.executor.BaseExecutor#update
ErrorContext.instance() 这种就是通过,ThreadLocal来记录ErrorContext,
ErrorContext.instance().resource(ms.getResource()).activity("executing a query").object(ms.getId());
上面是完整代码,他的写法,很简单,就是通过ErrorContext.instance()完成set ErrorContext,然后返回ErrorContext,并且通过build的方式一个一个赋值。
11、生成数组
Object[] array = ArrayUtil.createArray("1", "2");
12、判断当前项目下某个类是否存在:
import org.springframework.util.ClassUtils
ClassUtils.isPresent("org.springframework.web.reactive.DispatcherHandler", null)
13、利用类的class,通过反射去创建实例对象
Class<?> contextClass = Class.forName(“org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext”);
(ConfigurableApplicationContext) BeanUtils.instantiateClass(contextClass);
14、通过请求request获取请求的【请求路径】
getPathWithinApplication这个方法,就会返回本次请求的请求路径
15、判断某个class是否包含特定的注解
AnnotatedElementUtils.hasAnnotation(beanType, Controller.class)
获取指定注解的Bean
applicationContext.getBeansWithAnnotation(JobHandler.class);