Springboot 통합 Dozer 깊이 있는 복제
14196 단어 javawebDozerSpringBoot
Dozer
Dozer는 자바빈에서 자바빈으로 데이터를 한 대상에서 다른 대상으로 반복적으로 복제하는 강력한, 유니버설, 유연한, 재사용 가능한, 설정 가능한 소스 맵 프레임워크이다.
일반적인 용도:
권장 사항:
SpringBoot 통합 Dozer
jar 의존 도입
pom.xml 다음 의존 추가
<dependency>
<groupId>net.sf.dozergroupId>
<artifactId>dozer-springartifactId>
<version>5.5.1version>
dependency>
<dependency>
<groupId>net.sf.dozergroupId>
<artifactId>dozerartifactId>
<version>5.5.1version>
dependency>
dozer 설정 xml 도입
resource 폴더 아래에 Dozer 폴더를 새로 만들고 Bean-mappings를 새로 만듭니다.xml, global-configuration.xml
<mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://dozer.sourceforge.net
http://dozer.sourceforge.net/schema/beanmapping.xsd">
mappings>
<mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://dozer.sourceforge.net
http://dozer.sourceforge.net/schema/beanmapping.xsd">
<configuration>
<date-format>yyyy-MM-dd HH:mm:ssdate-format>
<wildcard>truewildcard>
<trim-strings>falsetrim-strings>
<custom-converters>
<converter type="com.dongao.beacon.ds.web.admin.tookit.EnumIntegerBiDirectionalDozerConverter">
<class-a>java.lang.Enumclass-a>
<class-b>java.lang.Integerclass-b>
converter>
custom-converters>
configuration>
mappings>
Dozer의 JavaConfig
SpringBoot에서 DozerBeanMapperFactoryBean을 찾는 데 사용할 설정 새로 만들기
DozerMapperConfig.java
public class DozerMapperConfig {
@Bean
public DozerBeanMapperFactoryBean dozerBeanMapperFactoryBean(@Value("classpath*:dozer/*.xml") Resource[] resources) throws Exception {
final DozerBeanMapperFactoryBean dozerBeanMapperFactoryBean = new DozerBeanMapperFactoryBean();
dozerBeanMapperFactoryBean.setMappingFiles(resources);
return dozerBeanMapperFactoryBean;
}
}
포맷 플랜트
새 패키지에는 Dozer 도구만 배치하는 것이 좋습니다.
IGenerator.java
인터페이스public interface IGenerator {
/**
* @Description: ,vo/domain , po
* @param s
* @param clz
* @return
* @author [email protected]
* @Time 2018 5 9 3:53:24
*/
T convert(S s, Class clz);
/**
* @Description
: (
ResultSet
)
*
@param s
* @param clz
* @return
* @author [email protected]
* @Time 2018 5 9 3:53:24
*/
ResultSet
convert(
ResultSet
s, Class clz);
/**
* @Description: list
* @param s
* @param clz
* @return
* @author [email protected]
* @Time 2018 5 9 3:54:08
*/
List convert(List s, Class clz);
/**
* @Description: set
* @param s
* @param clz
* @return
* @author [email protected]
* @Time 2018 5 9 3:54:39
*/
Set convert(Set s, Class clz);
/**
* @Description:
* @param s
* @param clz
* @return
* @author [email protected]
* @Time 2018 5 9 3:54:57
*/
T[] convert(S[] s, Class clz);
}
IGenerator
구현@Component
@Lazy(true)
public class EJBGenerator implements IGenerator {
@Autowired
protected Mapper dozerMapper;
public T convert(S s, Class clz) {
if (s == null) {
return null;
}
return this.dozerMapper.map(s, clz);
}
public
ResultSet
convert
(
ResultSet
s, Class clz) {
if (s == null) {
return null
;
}
ResultSet
resultSet
=
new
ResultSet
();
for
(S vs : s.getResult()) {
resultSet
.getResult().add(
this
.dozerMapper.map(vs, clz));
}
resultSet
.setTotal(s.getTotal());
resultSet
.setExt(s.getExt());
resultSet
.setModifyTime(s.getModifyTime());
return
resultSet
;
}
public List convert(List s, Class clz) {
if (s == null) {
return null;
}
List list = new ArrayList();
for (S vs : s) {
list.add(this.dozerMapper.map(vs, clz));
}
return list;
}
public Set convert(Set s, Class clz) {
if (s == null) {
return null;
}
Set set = new HashSet();
for (S vs : s) {
set.add(this.dozerMapper.map(vs, clz));
}
return set;
}
public T[] convert(S[] s, Class clz) {
if (s == null) {
return null;
}
@SuppressWarnings("unchecked")
T[] arr = (T[]) Array.newInstance(clz, s.length);
for (int i = 0; i < s.length; i++) {
arr[i] = this.dozerMapper.map(s[i], clz);
}
return arr;
}
}
데모 사용
일반적으로 공통 부모 클래스에 도입됩니다. 이 예는 프런트엔드 공통 Controller 도입입니다.
@Controller
public class BaseController {
@Autowired
protected EJBGenerator ejbGenerator = new EJBGenerator();
protected final Logger logger = LoggerFactory.getLogger(getClass());
}
// session
SessionUserDetails userDetails = ejbGenerator.convert(userVo, SessionUserDetails.class);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Javaweb에서 양식 데이터를 가져오는 다양한 방법Javaweb에서 양식 데이터를 가져오는 몇 가지 방법 1. 키 값이 맞는 형식으로 폼 데이터를 얻는다 getParameter(String name): 키를 통해 value를 반환합니다. getParameterVal...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.