1.设计背景 ,有common ,web,mgr 三个模块,cmomon做共有模块,web 作为app 的组件,mgr作为后管,在common模块 发起调用接口调用,但是common 模块不能引入web模块的bean 。为了使用面向对象编程,可以把web组件的bean 作为一个属性,传入到common组件的Bean 中
代码如下:
1.泛型的抽象类
package com.qimh.springbootfiledemo.generic;
public abstract class GeneratorAbstractor<T> {
protected T param;
public T getParam() {
return param;
}
public void setParam(T param) {
this.param = param;
}
}
2.实现类
package com.qimh.springbootfiledemo.generic;
public class PersonCreator extends GeneratorAbstractor<Person> {
}
3.web组件的bean
package com.qimh.springbootfiledemo.generic;
public class Person {
private Integer age;
private String name;
private Integer sex;
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
}
4.web 组件把 person 作为属性传入到Common组件的实现类中
package com.qimh.springbootfiledemo.generic;
import com.alibaba.fastjson.JSON;
public class MainTest {
public static void main(String[] args){
Person person = new Person();
person.setAge(20);
person.setName("张三");
person.setSex(1);
Person person2 = new Person();
person2.setAge(30);
person2.setName("李四");
person2.setSex(1);
PersonCreator personCreator = new PersonCreator();
personCreator.setParam(person);
Person tmp = personCreator.getParam();
PersonCreator personCreator2 = new PersonCreator();
personCreator2.setParam(person2);
Person tmp2 = personCreator2.getParam();
System.out.println(String.format("person:%s --- person2:%s", JSON.toJSONString(tmp),JSON.toJSONString(tmp2)));
}
}
5.运行结果
person:{"age":20,"name":"张三","sex":1} --- person2:{"age":30,"name":"李四","sex":1}
来源:oschina
链接:https://my.oschina.net/qimhkaiyuan/blog/3286184