@GetMapping("/test")
public DoctorDto get() {
Doctor doctor = new Doctor();
doctor.setId(1);
doctor.setName("张三");
doctor.setI1(1);
doctor.setS1("1");
return BeanConvert.INSTANCE.toDto(doctor);
}
验证-查看实现类
clean install 重启
测试
可以看到 i1,s1中的值已经过来了
不同类型(策略模式)
实体类
将下面 Sku2 中的 Long dateInteger code 分别转给 SkuDTO2 中的 Date dateString value
一个是时间戳转换,一个是枚举转换
@Data
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class Sku2 {
Long skuId;
String skuCode;
String skuPrice;
List nameList;
Long date;
Integer code;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class SkuDTO2 {
Long skuId;
String skuCode;
String skuPrice;
List nameList;
Date date;
String value;
}
@Component
public class EnumConvertStrategy {
public String convert(Integer code) {
return MyEnum.getByCode(code);
}
}
@Component
public class TimeConvertStrategy {
public Date date2TimeStamp(Long timeStamp) {
if (timeStamp == null) {
return null;
}
return new Date(timeStamp);
}
}
public enum MyEnum {
A(1,"哈哈"),B(2,"呵呵");
private final Integer code;
private final String msg;
MyEnum(int code, String msg) {
this.code = code;
this.msg = msg;
}
public Integer getCode() {
return code;
}
public String getMsg() {
return msg;
}
public static String getByCode(Integer code) {
if (code == null) {
return null;
}
for (MyEnum value : MyEnum.values()) {
if (value.getCode().equals(code)) {
return value.getMsg();
}
}
return null;
}
}
工具类
这里使用工具类,主要是辅助容器中的bean初始化的,包括我们定义的策略的初始化
/**
* ApplicationContextAware 接口可以让 Bean 获取到 ApplicationContext 对象
* 通过这个对象,可以获取 Spring 容器中的其他 Bean实例 或一些组件
*/
@Component
public class ConvertSupport implements ApplicationContextAware {
private static BeanConvert beanConvert;
/**
* 启动的时候,直接获取到 beanConvert 的实例
*/
@Override
public void setApplicationContext(ApplicationContext context) throws BeansException {
// 这里如果没有执行,说明没有注入容器,但是我有了@Component注解,说明其未生效,主启动类@ComponentScan指定一下
if (beanConvert == null) {
beanConvert = context.getBean(BeanConvert.class);
System.out.println("执行过这里");
}
}
/**
* 列表转换
*/
public static List copyList(List inputList, BiFunction function) {
if (CollectionUtils.isEmpty(inputList)) {
return Collections.emptyList();
}
List resultList = new ArrayList<>(inputList.size());
for (I input : inputList) {
resultList.add(function.apply(beanConvert, input));
}
return resultList;
}
/**
* bean to bean
*/
public static O castBean(I input, BiFunction function) {
return function.apply(beanConvert, input);
}
}
@GetMapping("/test3")
public List get3() {
List list = Lists.newArrayList(
new Doctor(1, "张三", "1", 1),
new Doctor(2, "李四", "2", 2),
new Doctor(3, "王五", "3", 3));
return ConvertSupport.copyList(list, BeanConvert::toDto);
}
此后,一行代码就能完成以前 先new,再 for循环,再add的多行代码,而且也不用判空
测试
策略模式说明
上面使用的是用来处理不同类型,平常去除 if else 的使用方式:
先定义两个 策略,和上面类似,spring管理后,通过策略内部判断决定怎么走,方法再抽象出一层
/**
* 策略1
*/
@Component
public class Situation1 implements Situation {
private static final String value = "用户传过来的值为1";
/**
* 判断进入哪个策略(if)
*/
@Override
public Boolean judge(String val) {
return value.equals(val);
}
/**
* 逻辑处理
*/
@Override
public int logic(int a, int b) {
return a + b;
}
}
/**
* 策略2
*/
@Component
public class Situation2 implements Situation {
private static final String value = "用户传过来的值为2";
/**
* 判断进入哪个策略(if)
*/
@Override
public Boolean judge(String val) {
return value.equals(val);
}
/**
* 逻辑处理
*/
@Override
public int logic(int a, int b) {
return a - b;
}
}
public interface Situation {
/**
* 判断进入哪个策略(if)
*/
Boolean judge(String val);
/**
* 逻辑处理
*/
int logic(int a, int b);
}
@RestController
public class StrategyTest {
@Autowired
private ApplicationContext applicationContext;
@GetMapping("/test/st")
public void test() {
String value = "用户传过来的值为2";
Map beans = applicationContext.getBeansOfType(Situation.class);
beans.forEach((k, Strategy) -> {
// 判断用户传过来的值,从而决定进入哪个策略
if (Strategy.judge(value)) {
int num = Strategy.logic(8, 2);
System.out.println(num);
}
});
}
}
Traits are a fundamental unit of code reuse in Scala. A trait encapsulates method and field definitions, which can then be reused by mixing them into classes. Unlike class inheritance, in which each c
版本:WebLogic Server 10.3
说明:%DOMAIN_HOME%:指WebLogic Server 域(Domain)目录
例如我的做测试的域的根目录 DOMAIN_HOME=D:/Weblogic/Middleware/user_projects/domains/base_domain
1.为了保证操作安全,备份%DOMAIN_HOME%/security/Defa
http://crazyjvm.iteye.com/blog/1693757 文中提到相关超时问题,但是又出现了一个问题,我把min和max都设置成了180000,但是仍然出现了以下的异常信息:
Client session timed out, have not heard from server in 154339ms for sessionid 0x13a3f7732340003
在Mysql 众多表中查找一个表名或者字段名的 SQL 语句:
方法一:SELECT table_name, column_name from information_schema.columns WHERE column_name LIKE 'Name';
方法二:SELECT column_name from information_schema.colum