diff --git a/src/main/java/com/monkeyk/sos/service/impl/OauthServiceImpl.java b/src/main/java/com/monkeyk/sos/service/impl/OauthServiceImpl.java
index ca5ad2d..97583a9 100644
--- a/src/main/java/com/monkeyk/sos/service/impl/OauthServiceImpl.java
+++ b/src/main/java/com/monkeyk/sos/service/impl/OauthServiceImpl.java
@@ -6,6 +6,8 @@ import com.monkeyk.sos.domain.oauth.OauthRepository;
 import com.monkeyk.sos.service.OauthService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -19,28 +21,33 @@ public class OauthServiceImpl implements OauthService {
     private OauthRepository oauthRepository;
 
     @Override
+    @Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
     public OauthClientDetails loadOauthClientDetails(String clientId) {
         return oauthRepository.findOauthClientDetails(clientId);
     }
 
     @Override
+    @Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
     public List<OauthClientDetailsDto> loadAllOauthClientDetailsDtos() {
         List<OauthClientDetails> clientDetailses = oauthRepository.findAllOauthClientDetails();
         return OauthClientDetailsDto.toDtos(clientDetailses);
     }
 
     @Override
+    @Transactional(propagation = Propagation.REQUIRED)
     public void archiveOauthClientDetails(String clientId) {
         oauthRepository.updateOauthClientDetailsArchive(clientId, true);
     }
 
     @Override
+    @Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
     public OauthClientDetailsDto loadOauthClientDetailsDto(String clientId) {
         final OauthClientDetails oauthClientDetails = oauthRepository.findOauthClientDetails(clientId);
         return oauthClientDetails != null ? new OauthClientDetailsDto(oauthClientDetails) : null;
     }
 
     @Override
+    @Transactional(propagation = Propagation.REQUIRED)
     public void registerClientDetails(OauthClientDetailsDto formDto) {
         OauthClientDetails clientDetails = formDto.createDomain();
         oauthRepository.saveOauthClientDetails(clientDetails);
diff --git a/src/main/java/com/monkeyk/sos/service/impl/UserServiceImpl.java b/src/main/java/com/monkeyk/sos/service/impl/UserServiceImpl.java
index 71a1872..9e50d0c 100644
--- a/src/main/java/com/monkeyk/sos/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/monkeyk/sos/service/impl/UserServiceImpl.java
@@ -16,6 +16,8 @@ import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.security.oauth2.provider.OAuth2Authentication;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Collection;
 import java.util.List;
@@ -30,6 +32,7 @@ public class UserServiceImpl implements UserService {
     private UserRepository userRepository;
 
     @Override
+    @Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
     public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
         User user = userRepository.findByUsername(username);
         if (user == null || user.archived()) {
@@ -40,6 +43,7 @@ public class UserServiceImpl implements UserService {
     }
 
     @Override
+    @Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
     public UserJsonDto loadCurrentUserJsonDto() {
         final Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
         final Object principal = authentication.getPrincipal();
@@ -54,6 +58,7 @@ public class UserServiceImpl implements UserService {
     }
 
     @Override
+    @Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
     public UserOverviewDto loadUserOverviewDto(UserOverviewDto overviewDto) {
         List<User> users = userRepository.findUsersByUsername(overviewDto.getUsername());
         overviewDto.setUserDtos(UserDto.toDtos(users));
@@ -61,12 +66,14 @@ public class UserServiceImpl implements UserService {
     }
 
     @Override
+    @Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
     public boolean isExistedUsername(String username) {
         final User user = userRepository.findByUsername(username);
         return user != null;
     }
 
     @Override
+    @Transactional(propagation = Propagation.REQUIRED)
     public String saveUser(UserFormDto formDto) {
         User user = formDto.newUser();
         userRepository.saveUser(user);
diff --git a/src/main/resources/spring/context.xml b/src/main/resources/spring/context.xml.old
similarity index 100%
rename from src/main/resources/spring/context.xml
rename to src/main/resources/spring/context.xml.old
diff --git a/src/main/resources/spring/transaction.xml b/src/main/resources/spring/transaction.xml.old
similarity index 100%
rename from src/main/resources/spring/transaction.xml
rename to src/main/resources/spring/transaction.xml.old