enums
DelEnum(枚举)(删除标记)
/**
* 删除标记枚举
* 公众号:马丁玩编程,回复:加群,添加马哥微信(备注:12306)获取项目资料
*/
public enum DelEnum {
/**
* 正常状态
*/
NORMAL(0),
/**
* 删除状态
*/
DELETE(1);
private final Integer statusCode;
DelEnum(Integer statusCode) {
this.statusCode = statusCode;
}
public Integer code() {
return this.statusCode;
}
public String strCode() {
return String.valueOf(this.statusCode);
}
@Override
public String toString() {
return strCode();
}
}
FlagEnum(枚举)(真假标识)
/**
* 标识枚举,非 {@link Boolean#TRUE} 即 {@link Boolean#FALSE}
* 公众号:马丁玩编程,回复:加群,添加马哥微信(备注:12306)获取项目资料
*/
public enum FlagEnum {
/**
* FALSE
*/
FALSE(0),
/**
* TRUE
*/
TRUE(1);
private final Integer flag;
FlagEnum(Integer flag) {
this.flag = flag;
}
public Integer code() {
return this.flag;
}
public String strCode() {
return String.valueOf(this.flag);
}
@Override
public String toString() {
return strCode();
}
}
OperationTypeEnum(枚举)(操作)
/**
* 操作类型
* 公众号:马丁玩编程,回复:加群,添加马哥微信(备注:12306)获取项目资料
*/
public enum OperationTypeEnum {
SAVE,
UPDATE,
DELETE
}
StatusEnum(枚举)(成功失败状态)
/**
* 状态枚举
* 公众号:马丁玩编程,回复:加群,添加马哥微信(备注:12306)获取项目资料
*/
public enum StatusEnum {
/**
* 成功StatusEnum
*/
SUCCESS(0),
/**
* 失败
*/
FAIL(1);
private final Integer statusCode;
StatusEnum(Integer statusCode) {
this.statusCode = statusCode;
}
public Integer code() {
return this.statusCode;
}
public String strCode() {
return String.valueOf(this.statusCode);
}
@Override
public String toString() {
return strCode();
}
}
threadpool
build
ThreadFactoryBuilder.java
线程工厂,使用了构建者模式
/**
* 线程工厂 {@link ThreadFactory} 构建器, 构建者模式
* 公众号:马丁玩编程,回复:加群,添加马哥微信(备注:12306)获取项目资料
*/
public final class ThreadFactoryBuilder implements Builder<ThreadFactory> {
private static final long serialVersionUID = 1L;
private ThreadFactory backingThreadFactory;
private String namePrefix;
private Boolean daemon;
private Integer priority;
private Thread.UncaughtExceptionHandler uncaughtExceptionHandler;
public ThreadFactoryBuilder threadFactory(ThreadFactory backingThreadFactory) {
this.backingThreadFactory = backingThreadFactory;
return this;
}
public ThreadFactoryBuilder prefix(String namePrefix) {
this.namePrefix = namePrefix;
return this;
}
public ThreadFactoryBuilder daemon(boolean daemon) {
this.daemon = daemon;
return this;
}
public ThreadFactoryBuilder priority(int priority) {
if (priority < Thread.MIN_PRIORITY) {
throw new IllegalArgumentException(String.format("Thread priority ({}) must be >= {}", priority, Thread.MIN_PRIORITY));
}
if (priority > Thread.MAX_PRIORITY) {
throw new IllegalArgumentException(String.format("Thread priority ({}) must be <= {}", priority, Thread.MAX_PRIORITY));
}
this.priority = priority;
return this;
}
public void uncaughtExceptionHandler(Thread.UncaughtExceptionHandler uncaughtExceptionHandler) {
this.uncaughtExceptionHandler = uncaughtExceptionHandler;
}
public static ThreadFactoryBuilder builder() {
return new ThreadFactoryBuilder();
}
@Override
public ThreadFactory build() {
return build(this);
}
private static ThreadFactory build(ThreadFactoryBuilder builder) {
final ThreadFactory backingThreadFactory = (null != builder.backingThreadFactory)
? builder.backingThreadFactory
: Executors.defaultThreadFactory();
final String namePrefix = builder.namePrefix;
final Boolean daemon = builder.daemon;
final Integer priority = builder.priority;
final Thread.UncaughtExceptionHandler handler = builder.uncaughtExceptionHandler;
final AtomicLong count = (null == namePrefix) ? null : new AtomicLong();
return r -> {
final Thread thread = backingThreadFactory.newThread(r);
if (null != namePrefix) {
thread.setName(namePrefix + "_" + count.getAndIncrement());
}
if (null != daemon) {
thread.setDaemon(daemon);
}
if (null != priority) {
thread.setPriority(priority);
}
if (null != handler) {
thread.setUncaughtExceptionHandler(handler);
}
return thread;
};
}
}
ThreadPoolBuilder.java
proxy
RejectedProxyInvocationHandler.java
RejectedProxyUtil.java
support.eager
EagerThreadPoolExecutor.java
TaskQueue.java
proxy
toolkit
Assert.java
BeanUtil.java(对象属性转换器)
@NoArgsConstructor(access = lombok.AccessLevel.PRIVATE)//表示此类被私有化,只能静态方法调用,不能被实例化
public class BeanUtil {
protected static Mapper BEAN_MAPPER_BUILDER;
static {
BEAN_MAPPER_BUILDER = DozerBeanMapperBuilder.buildDefault();
}
/**
* 属性复制
*
* @param source 数据对象
* @param target 目标对象
* @param <T>
* @param <S>
* @return 转换后对象
*/
public static <T, S> T convert(S source, T target) {
Optional.ofNullable(source)
.ifPresent(each -> BEAN_MAPPER_BUILDER.map(each, target));
return target;
}
/**
* 复制单个对象
*
* @param source 数据对象
* @param clazz 复制目标类型
* @param <T>
* @param <S>
* @return 转换后对象
*/
public static <T, S> T convert(S source, Class<T> clazz) {
return Optional.ofNullable(source)
.map(each -> BEAN_MAPPER_BUILDER.map(each, clazz))
.orElse(null);
}
/**
* 复制多个对象
*
* @param sources 数据对象
* @param clazz 复制目标类型
* @param <T>
* @param <S>
* @return 转换后对象集合
*/
public static <T, S> List<T> convert(List<S> sources, Class<T> clazz) {
return Optional.ofNullable(sources)
.map(each -> {
List<T> targetList = new ArrayList<T>(each.size());
each.stream()
.forEach(item -> targetList.add(BEAN_MAPPER_BUILDER.map(item, clazz)));
return targetList;
})
.orElse(null);
}
/**
* 复制多个对象
*
* @param sources 数据对象
* @param clazz 复制目标类型
* @param <T>
* @param <S>
* @return 转换后对象集合
*/
public static <T, S> Set<T> convert(Set<S> sources, Class<T> clazz) {
return Optional.ofNullable(sources)
.map(each -> {
Set<T> targetSize = new HashSet<T>(each.size());
each.stream()
.forEach(item -> targetSize.add(BEAN_MAPPER_BUILDER.map(item, clazz)));
return targetSize;
})
.orElse(null);
}
/**
* 复制多个对象
*
* @param sources 数据对象
* @param clazz 复制目标类型
* @param <T>
* @param <S>
* @return 转换后对象集合
*/
public static <T, S> T[] convert(S[] sources, Class<T> clazz) {
return Optional.ofNullable(sources)
.map(each -> {
@SuppressWarnings("unchecked")
T[] targetArray = (T[]) Array.newInstance(clazz, sources.length);
for (int i = 0; i < targetArray.length; i++) {
targetArray[i] = BEAN_MAPPER_BUILDER.map(sources[i], clazz);
}
return targetArray;
})
.orElse(null);
}
/**
* 拷贝非空且非空串属性
*
* @param source 数据源
* @param target 指向源
*/
public static void convertIgnoreNullAndBlank(Object source, Object target) {
DozerBeanMapperBuilder dozerBeanMapperBuilder = DozerBeanMapperBuilder.create();
Mapper mapper = dozerBeanMapperBuilder.withMappingBuilders(new BeanMappingBuilder() {
@Override
protected void configure() {
mapping(source.getClass(), target.getClass(), mapNull(false), mapEmptyString(false));
}
}).build();
mapper.map(source, target);
}
/**
* 拷贝非空属性
*
* @param source 数据源
* @param target 指向源
*/
public static void convertIgnoreNull(Object source, Object target) {
DozerBeanMapperBuilder dozerBeanMapperBuilder = DozerBeanMapperBuilder.create();
Mapper mapper = dozerBeanMapperBuilder.withMappingBuilders(new BeanMappingBuilder() {
@Override
protected void configure() {
mapping(source.getClass(), target.getClass(), mapNull(false));
}
}).build();
mapper.map(source, target);
}
}
1.DozerBeanMapperBuilder.buildDefault()
的主要作用是创建一个默认的 Mapper
实例,该实例可以用于将源对象的属性映射到目标对象。
2.表示此类被私有化,只能静态方法调用,不能被实例化