diff --git a/samples/user/src/main/java/com/supwisdom/infras/data/jpa/EnableInfrasDataJpa.java b/samples/user/src/main/java/com/supwisdom/infras/data/jpa/EnableInfrasDataJpa.java
new file mode 100644
index 0000000..f209145
--- /dev/null
+++ b/samples/user/src/main/java/com/supwisdom/infras/data/jpa/EnableInfrasDataJpa.java
@@ -0,0 +1,19 @@
+package com.supwisdom.infras.data.jpa;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.springframework.context.annotation.Import;
+
+import com.supwisdom.infras.data.jpa.autoconfigure.InfrasDataJpaMarkerConfiguration;
+
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Import(InfrasDataJpaMarkerConfiguration.class)
+public @interface EnableInfrasDataJpa {
+
+}
diff --git a/samples/user/src/main/java/com/supwisdom/infras/data/jpa/autoconfigure/InfrasDataJpaAutoConfiguration.java b/samples/user/src/main/java/com/supwisdom/infras/data/jpa/autoconfigure/InfrasDataJpaAutoConfiguration.java
new file mode 100644
index 0000000..3db37f0
--- /dev/null
+++ b/samples/user/src/main/java/com/supwisdom/infras/data/jpa/autoconfigure/InfrasDataJpaAutoConfiguration.java
@@ -0,0 +1,15 @@
+package com.supwisdom.infras.data.jpa.autoconfigure;
+
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+import com.supwisdom.infras.data.jpa.configure.InfrasDataJpaConfigure;
+
+@Configuration
+@ConditionalOnBean(InfrasDataJpaMarkerConfiguration.Marker.class)
+@Import(InfrasDataJpaConfigure.class)
+//@AutoConfigureAfter(JpaRepositoriesAutoConfiguration.class)
+public class InfrasDataJpaAutoConfiguration {
+  
+}
diff --git a/samples/user/src/main/java/com/supwisdom/infras/data/jpa/autoconfigure/InfrasDataJpaMarkerConfiguration.java b/samples/user/src/main/java/com/supwisdom/infras/data/jpa/autoconfigure/InfrasDataJpaMarkerConfiguration.java
new file mode 100644
index 0000000..2e7ef5c
--- /dev/null
+++ b/samples/user/src/main/java/com/supwisdom/infras/data/jpa/autoconfigure/InfrasDataJpaMarkerConfiguration.java
@@ -0,0 +1,17 @@
+package com.supwisdom.infras.data.jpa.autoconfigure;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class InfrasDataJpaMarkerConfiguration {
+  
+  @Bean
+  public Marker dataJpaMarkerBean() {
+    return new Marker();
+  }
+
+  class Marker {
+  }
+
+}
diff --git a/samples/user/src/main/java/com/supwisdom/infras/data/jpa/configure/InfrasDataJpaConfigure.java b/samples/user/src/main/java/com/supwisdom/infras/data/jpa/configure/InfrasDataJpaConfigure.java
new file mode 100644
index 0000000..458d08d
--- /dev/null
+++ b/samples/user/src/main/java/com/supwisdom/infras/data/jpa/configure/InfrasDataJpaConfigure.java
@@ -0,0 +1,12 @@
+package com.supwisdom.infras.data.jpa.configure;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
+import org.springframework.data.web.config.EnableSpringDataWebSupport;
+
+@Configuration
+@EnableJpaRepositories(basePackages = "${infras.data.jpa.basePackages:com.supwisdom.**.repository}")
+@EnableSpringDataWebSupport
+public class InfrasDataJpaConfigure {
+
+}
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/jpa/domain/ABaseDomain.java b/samples/user/src/main/java/com/supwisdom/infras/data/jpa/domain/ABaseDomain.java
similarity index 98%
rename from samples/user/src/main/java/com/supwisdom/leaveschool/jpa/domain/ABaseDomain.java
rename to samples/user/src/main/java/com/supwisdom/infras/data/jpa/domain/ABaseDomain.java
index 9aabafd..4c99db2 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/jpa/domain/ABaseDomain.java
+++ b/samples/user/src/main/java/com/supwisdom/infras/data/jpa/domain/ABaseDomain.java
@@ -1,4 +1,4 @@
-package com.supwisdom.leaveschool.jpa.domain;
+package com.supwisdom.infras.data.jpa.domain;
 
 import java.io.Serializable;
 import java.util.Date;
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/jpa/repository/ABaseJpaRepositoryImpl.java b/samples/user/src/main/java/com/supwisdom/infras/data/jpa/repository/ABaseJpaRepositoryImpl.java
similarity index 94%
rename from samples/user/src/main/java/com/supwisdom/leaveschool/jpa/repository/ABaseJpaRepositoryImpl.java
rename to samples/user/src/main/java/com/supwisdom/infras/data/jpa/repository/ABaseJpaRepositoryImpl.java
index 531f524..2daf122 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/jpa/repository/ABaseJpaRepositoryImpl.java
+++ b/samples/user/src/main/java/com/supwisdom/infras/data/jpa/repository/ABaseJpaRepositoryImpl.java
@@ -1,4 +1,4 @@
-package com.supwisdom.leaveschool.jpa.repository;
+package com.supwisdom.infras.data.jpa.repository;
 
 import java.util.Calendar;
 import java.util.Map;
@@ -13,10 +13,10 @@
 import org.springframework.data.jpa.repository.support.SimpleJpaRepository;
 import org.springframework.data.repository.NoRepositoryBean;
 
-import com.supwisdom.leaveschool.jpa.domain.ABaseDomain;
+import com.supwisdom.infras.data.jpa.domain.ABaseDomain;
 
 @Transactional
-//@NoRepositoryBean
+@NoRepositoryBean
 public class ABaseJpaRepositoryImpl<T extends ABaseDomain> extends SimpleJpaRepository<T, String> implements BaseJpaRepository<T> {
 
   @SuppressWarnings("unused")
diff --git a/samples/user/src/main/java/com/supwisdom/infras/data/jpa/repository/BaseJpaRepository.java b/samples/user/src/main/java/com/supwisdom/infras/data/jpa/repository/BaseJpaRepository.java
new file mode 100644
index 0000000..b533987
--- /dev/null
+++ b/samples/user/src/main/java/com/supwisdom/infras/data/jpa/repository/BaseJpaRepository.java
@@ -0,0 +1,66 @@
+package com.supwisdom.infras.data.jpa.repository;
+
+import java.util.Calendar;
+import java.util.Map;
+import java.util.Optional;
+
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.repository.NoRepositoryBean;
+
+import com.supwisdom.infras.data.jpa.domain.ABaseDomain;
+
+@NoRepositoryBean
+public interface BaseJpaRepository<T extends ABaseDomain> extends JpaRepository<T, String> {
+  
+  public default Page<T> selectPageList(int pageIndex, int pageSize, Map<String, Object> mapBean) {
+
+    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
+
+    Page<T> page = this.findAll(pageRequest);
+
+    return page;
+  }
+  
+  public default T selectById(String id) {
+
+    try {
+      Optional<T> entity = this.findById(id);
+
+      return entity.get();
+    } catch (RuntimeException e) {
+      System.out.println("RuntimeException:" + e.getMessage());
+    } catch (Exception e) {
+      System.out.println("Exception:" + e.getMessage());
+    }
+
+    return null;
+  }
+  
+  public default T insert(T entity) {
+
+    if (entity.getCompanyId() == null || entity.getCompanyId().isEmpty()) {
+      entity.setCompanyId("1");
+    }
+
+    entity.setDeleted(false);
+    //entity.setAddAccount(AuthUtil.getRemoteUser()); // FIXME: setAddAccount
+    entity.setAddTime(Calendar.getInstance().getTime());
+
+    T e = this.save(entity);
+
+    return e;
+  }
+  
+  public default T update(T entity) {
+
+    //entity.setEditAccount(AuthUtil.getRemoteUser()); // FIXME: setEditAccount
+    entity.setEditTime(Calendar.getInstance().getTime());
+
+    T e = this.save(entity);
+
+    return e;
+  }
+
+}
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/jpa/config/BaseJpaRepositoryFactoryBean.java b/samples/user/src/main/java/com/supwisdom/infras/data/jpa/repository/support/BaseJpaRepositoryFactoryBean.java
similarity index 90%
rename from samples/user/src/main/java/com/supwisdom/leaveschool/jpa/config/BaseJpaRepositoryFactoryBean.java
rename to samples/user/src/main/java/com/supwisdom/infras/data/jpa/repository/support/BaseJpaRepositoryFactoryBean.java
index 0194bb0..ae4c0eb 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/jpa/config/BaseJpaRepositoryFactoryBean.java
+++ b/samples/user/src/main/java/com/supwisdom/infras/data/jpa/repository/support/BaseJpaRepositoryFactoryBean.java
@@ -1,4 +1,4 @@
-package com.supwisdom.leaveschool.jpa.config;
+package com.supwisdom.infras.data.jpa.repository.support;
 
 import javax.persistence.EntityManager;
 
@@ -9,8 +9,8 @@
 import org.springframework.data.repository.core.RepositoryMetadata;
 import org.springframework.data.repository.core.support.RepositoryFactorySupport;
 
-import com.supwisdom.leaveschool.jpa.domain.ABaseDomain;
-import com.supwisdom.leaveschool.jpa.repository.ABaseJpaRepositoryImpl;
+import com.supwisdom.infras.data.jpa.domain.ABaseDomain;
+import com.supwisdom.infras.data.jpa.repository.ABaseJpaRepositoryImpl;
 
 public class BaseJpaRepositoryFactoryBean<T extends ABaseJpaRepositoryImpl<S>, S extends ABaseDomain> extends JpaRepositoryFactoryBean<T, S, String> {
 
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/jpa/config/JpaDataConfig.java b/samples/user/src/main/java/com/supwisdom/leaveschool/jpa/config/JpaDataConfig.java
deleted file mode 100644
index 9980892..0000000
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/jpa/config/JpaDataConfig.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.supwisdom.leaveschool.jpa.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.data.web.config.EnableSpringDataWebSupport;
-
-//@Configuration
-//@EnableJpaRepositories(basePackages = "com.supwisdom.leaveschool.user.repository", repositoryFactoryBeanClass = BaseJpaRepositoryFactoryBean.class)
-//@EnableSpringDataWebSupport
-public class JpaDataConfig {
-
-}
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/jpa/repository/BaseJpaRepository.java b/samples/user/src/main/java/com/supwisdom/leaveschool/jpa/repository/BaseJpaRepository.java
deleted file mode 100644
index 12b44a0..0000000
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/jpa/repository/BaseJpaRepository.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.supwisdom.leaveschool.jpa.repository;
-
-import java.util.Map;
-
-import org.springframework.data.domain.Page;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.repository.NoRepositoryBean;
-
-import com.supwisdom.leaveschool.jpa.domain.ABaseDomain;
-
-@NoRepositoryBean
-public interface BaseJpaRepository<T extends ABaseDomain> extends JpaRepository<T, String> {
-  
-  public Page<T> selectPageList(int pageIndex, int pageSize, Map<String, Object> mapBean);
-  
-  public T selectById(String id);
-  
-  public T insert(T entity);
-  
-  public T update(T entity);
-
-}
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/domain/User.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/domain/User.java
index 6377494..70a4a4e 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/domain/User.java
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/domain/User.java
@@ -4,7 +4,7 @@
 import javax.persistence.Entity;
 import javax.persistence.Table;
 
-import com.supwisdom.leaveschool.jpa.domain.ABaseDomain;
+import com.supwisdom.infras.data.jpa.domain.ABaseDomain;
 
 import lombok.Data;
 
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/repository/UserRepository.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/repository/UserRepository.java
index a219ac0..097b648 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/repository/UserRepository.java
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/repository/UserRepository.java
@@ -10,7 +10,7 @@
 import org.springframework.data.domain.PageRequest;
 import org.springframework.stereotype.Repository;
 
-import com.supwisdom.leaveschool.jpa.repository.BaseJpaRepository;
+import com.supwisdom.infras.data.jpa.repository.BaseJpaRepository;
 import com.supwisdom.leaveschool.user.domain.User;
 
 @Repository
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test.java
index 20b15e3..ea7dced 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test.java
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test.java
@@ -4,7 +4,7 @@
 
 import javax.persistence.Column;
 
-import com.supwisdom.leaveschool.jpa.domain.ABaseDomain;
+import com.supwisdom.infras.data.jpa.domain.ABaseDomain;
 
 public class Test extends ABaseDomain {
 
diff --git a/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test2.java b/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test2.java
index 7f4b855..67917d8 100644
--- a/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test2.java
+++ b/samples/user/src/main/java/com/supwisdom/leaveschool/user/util/Test2.java
@@ -4,7 +4,7 @@
 
 import javax.persistence.Column;
 
-import com.supwisdom.leaveschool.jpa.domain.ABaseDomain;
+import com.supwisdom.infras.data.jpa.domain.ABaseDomain;
 
 public class Test2 extends ABaseDomain {
 
diff --git a/samples/user/src/main/resources/META-INF/spring.factories b/samples/user/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000..85d945b
--- /dev/null
+++ b/samples/user/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,3 @@
+# Auto Configure
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+com.supwisdom.infras.data.jpa.autoconfigure.InfrasDataJpaAutoConfiguration
\ No newline at end of file
diff --git a/samples/user/src/main/resources/application.yml b/samples/user/src/main/resources/application.yml
index 9f6ca40..5493de8 100755
--- a/samples/user/src/main/resources/application.yml
+++ b/samples/user/src/main/resources/application.yml
@@ -39,3 +39,6 @@
       include-path: true
       include-timestamp: true
       include-status: true
+  data:
+    jpa:
+      basePackages: com.supwisdom.leaveschool.user.repository
