Commit 10d20dbd60bf6bf0c64228be4ebd5336345cfd9f

Authored by sangkiham
1 parent 9b21f059

Mybatis 추가

application.yml에 환경추가
  HomeController --> /hello에 테스트 페이지 추가
  	HomeService, Home(Mapper, xml)
화면의 경우 Thymeleaf를 사용해야함.
  application.yml에 환경추가
  http://localhost:8080/social/login 테스트페이지
.classpath
... ... @@ -19,6 +19,12 @@
19 19 <attribute name="test" value="true"/>
20 20 </attributes>
21 21 </classpathentry>
  22 + <classpathentry kind="src" output="bin/querydsl" path="build/generated/querydsl">
  23 + <attributes>
  24 + <attribute name="gradle_scope" value="querydsl"/>
  25 + <attribute name="gradle_used_by_scope" value="querydsl"/>
  26 + </attributes>
  27 + </classpathentry>
22 28 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11/"/>
23 29 <classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/>
24 30 <classpathentry kind="output" path="bin/default"/>
... ...
build.gradle
... ... @@ -39,6 +39,7 @@ dependencies {
39 39 implementation 'com.google.code.gson:gson'
40 40  
41 41 implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
  42 + implementation('nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect')
42 43 implementation 'io.springfox:springfox-boot-starter:3.0.0'
43 44  
44 45 compileOnly 'org.projectlombok:lombok'
... ... @@ -46,6 +47,9 @@ dependencies {
46 47 testImplementation 'org.springframework.boot:spring-boot-starter-test'
47 48 testImplementation 'org.springframework.security:spring-security-test'
48 49  
  50 + implementation 'org.springframework.boot:spring-boot-starter-jdbc'
  51 + implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.2'
  52 +
49 53 }
50 54  
51 55 test {
... ...
src/main/java/daeucna/Security/domain/mapper/Home.java 0 → 100644
  1 +package daeucna.Security.domain.mapper;
  2 +
  3 +import java.util.List;
  4 +import java.util.Map;
  5 +
  6 +import org.apache.ibatis.annotations.Mapper;
  7 +
  8 +@Mapper
  9 +public interface Home {
  10 +
  11 + public List<Map<String, Object>> getTestData(Map<String, Object> param);
  12 +
  13 +}
... ...
src/main/java/daeucna/Security/domain/service/HomeService.java 0 → 100644
  1 +package daeucna.Security.domain.service;
  2 +
  3 +import java.util.List;
  4 +import java.util.Map;
  5 +
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.stereotype.Service;
  8 +import org.springframework.transaction.annotation.Transactional;
  9 +
  10 +import daeucna.Security.domain.mapper.Home;
  11 +import lombok.extern.slf4j.Slf4j;
  12 +
  13 +@Slf4j
  14 +@Service
  15 +@Transactional(readOnly = true)
  16 +public class HomeService {
  17 +
  18 + @Autowired
  19 + Home home;
  20 +
  21 + public List<Map<String, Object>> getTestData(Map<String, Object> param) {
  22 + List<Map<String, Object>> result = home.getTestData(param);
  23 + return result;
  24 + }
  25 +
  26 +}
... ...
src/main/java/daeucna/Security/domain/service/SignService.java
1 1 package daeucna.Security.domain.service;
2 2  
3   -import lombok.RequiredArgsConstructor;
4   -import lombok.extern.slf4j.Slf4j;
  3 +import java.util.Optional;
  4 +import java.util.UUID;
  5 +
5 6 import org.springframework.security.crypto.password.PasswordEncoder;
6 7 import org.springframework.stereotype.Service;
7 8 import org.springframework.transaction.annotation.Transactional;
8 9  
9   -import daeucna.Security.advice.exception.*;
  10 +import daeucna.Security.advice.exception.EmailNotAuthenticatedException;
  11 +import daeucna.Security.advice.exception.InvalidRefreshTokenException;
  12 +import daeucna.Security.advice.exception.LoginFailureException;
  13 +import daeucna.Security.advice.exception.MemberIdAlreadyExistsException;
  14 +import daeucna.Security.advice.exception.MemberNotFoundException;
10 15 import daeucna.Security.config.security.jwt.JwtTokenProvider;
11 16 import daeucna.Security.domain.auth.AccessToken;
12 17 import daeucna.Security.domain.auth.Profile.ProfileDto;
... ... @@ -16,13 +21,11 @@ import daeucna.Security.domain.dto.TokenResponseDto;
16 21 import daeucna.Security.domain.entity.Member;
17 22 import daeucna.Security.domain.rediskey.RedisKey;
18 23 import daeucna.Security.domain.repository.MemberRepository;
19   -import daeucna.Security.web.dto.EmailAuthRequestDto;
20 24 import daeucna.Security.web.dto.MemberLoginRequestDto;
21 25 import daeucna.Security.web.dto.MemberRegisterRequestDto;
22 26 import daeucna.Security.web.dto.ReIssueRequestDto;
23   -
24   -import java.util.Optional;
25   -import java.util.UUID;
  27 +import lombok.RequiredArgsConstructor;
  28 +import lombok.extern.slf4j.Slf4j;
26 29  
27 30 @Slf4j
28 31 @Service
... ...
src/main/java/daeucna/Security/web/controller/HomeController.java
... ... @@ -3,22 +3,37 @@ package daeucna.Security.web.controller;
3 3 import io.swagger.annotations.ApiOperation;
4 4 import lombok.RequiredArgsConstructor;
5 5 import lombok.extern.slf4j.Slf4j;
  6 +
  7 +import java.util.HashMap;
  8 +import java.util.List;
  9 +import java.util.Map;
  10 +
  11 +import org.slf4j.Logger;
  12 +import org.slf4j.LoggerFactory;
  13 +import org.springframework.beans.factory.annotation.Autowired;
6 14 import org.springframework.web.bind.annotation.GetMapping;
7 15 import org.springframework.web.bind.annotation.RestController;
8 16  
  17 +import daeucna.Security.domain.service.HomeService;
9 18 import daeucna.Security.domain.service.SignService;
10 19  
11 20 @Slf4j
12 21 @RestController
13 22 @RequiredArgsConstructor
14 23 public class HomeController {
15   -
  24 + private Logger logger = LoggerFactory.getLogger(HomeController.class);
  25 +
  26 + @Autowired
16 27 private final SignService memberService;
17 28  
  29 + @Autowired
  30 + private final HomeService homeService;
  31 +
18 32 @ApiOperation(value = "테스트 페이지", notes = "인증을 위한 테스트 페이지입니다.")
19 33 @GetMapping("/hello")
20   - public String hello() {
21   - return "Hello";
  34 + public List<Map<String, Object>> hello() {
  35 + List<Map<String, Object>> lResult = homeService.getTestData(new HashMap<String, Object>());
  36 + return lResult;
22 37 }
23 38  
24 39 }
... ...
src/main/java/daeucna/Security/web/controller/SignController.java
1 1 package daeucna.Security.web.controller;
2 2  
3   -import io.swagger.annotations.ApiOperation;
4   -import lombok.RequiredArgsConstructor;
5   -import lombok.extern.slf4j.Slf4j;
6   -import org.springframework.web.bind.annotation.*;
  3 +import org.springframework.web.bind.annotation.PathVariable;
  4 +import org.springframework.web.bind.annotation.PostMapping;
  5 +import org.springframework.web.bind.annotation.RequestBody;
  6 +import org.springframework.web.bind.annotation.RequestMapping;
  7 +import org.springframework.web.bind.annotation.RestController;
7 8  
8 9 import daeucna.Security.domain.auth.AuthCode;
9 10 import daeucna.Security.domain.dto.MemberLoginResponseDto;
... ... @@ -12,10 +13,12 @@ import daeucna.Security.domain.dto.TokenResponseDto;
12 13 import daeucna.Security.domain.result.SingleResult;
13 14 import daeucna.Security.domain.service.ResponseService;
14 15 import daeucna.Security.domain.service.SignService;
15   -import daeucna.Security.web.dto.EmailAuthRequestDto;
16 16 import daeucna.Security.web.dto.MemberLoginRequestDto;
17 17 import daeucna.Security.web.dto.MemberRegisterRequestDto;
18 18 import daeucna.Security.web.dto.ReIssueRequestDto;
  19 +import io.swagger.annotations.ApiOperation;
  20 +import lombok.RequiredArgsConstructor;
  21 +import lombok.extern.slf4j.Slf4j;
19 22  
20 23 @Slf4j
21 24 @RestController
... ...
src/main/resources/application.yml
... ... @@ -51,4 +51,16 @@ spring:
51 51 url:
52 52 login: https://nid.naver.com/oauth2.0/authorize
53 53 token: https://nid.naver.com/oauth2.0/token
54   - profile: https://openapi.naver.com/v1/nid/me
55 54 \ No newline at end of file
  55 + profile: https://openapi.naver.com/v1/nid/me
  56 +
  57 + #jsp의 설정이 기존에 있기 때문에 thymeleaf/ 로 호출되면 타임리프가 처리되도록 반영하기 위한 코드
  58 + thymeleaf:
  59 + prefix: classpath:/templates/
  60 + suffix: .html
  61 + #thymeleaf 수정 사항 발생 시, 서버 재기동 없이 캐시를 무시하기 위한 코드
  62 + cache: false
  63 + check-template-location: true
  64 +
  65 +mybatis:
  66 + mapper-locations: classpath:mybatis/mapper/**.xml
  67 +
... ...
src/main/resources/mybatis/mapper/Home.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3 +<mapper namespace="daeucna.Security.domain.mapper.Home">
  4 +
  5 + <select id="getTestData" parameterType="map" resultType="map">
  6 + /* getTestData */
  7 + SELECT TOP (1000) [member_id]
  8 + ,[email]
  9 + ,[email_auth]
  10 + ,[password]
  11 + ,[provider]
  12 + FROM [dbo].[members]
  13 + </select>
  14 +
  15 +</mapper>
0 16 \ No newline at end of file
... ...