TIL - 0727

[프로젝트 개발] spring-security OAuth2 - jwt

리팩토링

  • 다른 객체의 상태값을 get해서 바깥에서 상태를 가지고 무언가를 만드는 작업을 하지말고 해당 객체에 메세지를 보내서 일 시키기
    • get해서 가공하는 쪽으로 가면 코드의 의존성이 커지기때문에 get해오는 쪽에서 변경이 생기면 가공하는 쪽에서도 변경이 생기게 됨
  • 현재의 방법(전략)이 앞으로 고정될 것이라고 생각하고 코딩하면 안됨 : 언제든지 변경이 생길 수 있다는 점을 생각하고 코딩하기
    • 한가지 방법으로 고정시켜두면 테스트하기도 힘들어질 때가 있음 : DI할 수 있도록 코딩을 해두면 테스트하기 편한 전략으로 교체할 수 있어서 테스트하기가 수월해짐
    • 아래 코드를 보면 실제로는 인증서버로 가서 verify - 사용자 정보를 얻어와야하지만, 테스트 환경에서는 인증 과정에 대해서는 생략하고 임의적으로 정보를 설정한 뒤 이후 과정에 대해서 테스트 할 수 있음
public interface SocialAuthenticationTemplate {

    SocialProperty auth(PreSocialLoginToken token);
}

public class KakaoAuthenticationTemplate implements SocialAuthenticationTemplate {

}

public class TestAuthenticationTemplate implements SocialAuthenticationTemplate {

}
  • key는 하드코딩하지않고 키 파일을 생성하고 관리하기 : key가 노출되지만 않으면 됨 - 특히 github을 통해 팀프로젝트를 진행할 때 조심해야함
    • application.properties는 서버의 세팅과 관련한 내용이 있는 파일로 업로드 하지 말 것
@Value("${access.token}")
private String accessToken;

SQL

문자열 연산

  • CONCAT : 두 열의 데이터를 하나의 문자열로 만들기위해서 사용함
    • 해당 함수는 MySQL에서만 사용됨, Oracle 등 각각 해당 기능이 있으나 다른 SQL을 사용함
> SELECT CONCAT(NAME, ITEM_ID) AS ITEM_NAME FROM ITEM;
  • SUBSTRING : 문자열에서 일부만 잘라내기
SELECT SUBSTRING(NAME, 1, 1) FROM ITEM;
  • TRIM : 문자열의 앞 뒤로 있는 스페이스 없애기
> SELECT TRIM(NAME) FROM ITEM;