안녕하세요. 오늘은 스프링 프로젝트들 중에서 단연 최고 난이도로 알려져 있는 Spring Security 설정해보기 시리즈 중 첫번째 단계인 스펙정의 및 사전작업에 대해서 설명해드리고자 합니다. 제목부터 확인해볼까요? Restful API 구현을 위한 Spring Security 설정해보기 1. Session Stateless Restful API 라는 것은 여러가지 의미가 담겨있습니다. API URL에 대한 내용이 있을 수 있고, Session Stateless 라는 개념이 있을 수도 있고, Spring Hateoas와 관련된 link 기능을 제공하는 것과 관련이 있습니다. 이러한 여러가지 중에서 Spring Security에서 담당해야할 부분은 인증과 권한, 이 두 개념과 관련이 있는 Session ..
안녕하세요. 오늘은 최초 프로젝트 구조를 잡을 때, 에러처리가 굉장히 중요한데요. 자바에서 에러처리는 try/catch 문을 활용하거나 throws Exception과 같은 문법을 활용하는데요. 스프링에서 관점지향 프로그래밍인 AOP와 @RestControllerAdvice, @ExceptionHandler를 이용하여 전체적인 에러처리하는 방법에 대해서 공유하고자 합니다. 구조는 아래와 같이 만들어보았습니다. 프로젝트 구조 Request 요청이 지나가는 순서대로 소스를 살펴보겠습니다. 1. RestControllerAspect.java @Aspect @Component public class RestControllerAspect { /** * Controller 클래스 프록시 * @param procee..
안녕하세요. 이번에는 요구사항에 따라 프로젝트가 실행될 때 데이터베이스 테이블이 생성된다거나 생성된 테이블에 데이터를 미리 넣어놔야하는 경우, 즉 DDL, DML 같은 스키마를 좀더 SQL 형태로 미리 정의하여 실행하는 방법에 대해서 포스팅해보고자 합니다. 1. 프로젝트 생성 먼저 간단한 스프링부트 프로젝트를 생성해야합니다. 예제이므로 어떠한 의존성도 추가할 필요가 없기 때문에 그냥 생성만 해줍니다. 프로젝트를 생성했다면 Eclipse나 IntelliJ 같은 IDE를 통해 작업을 하실텐데 XXXApplication 클래스가 생성되었는지 확인하시고 main 메소드가 존재하는지 확인합니다. 여기까지는 프로젝트 생성만 하면 별 다른 내용없이 확인 가능하실겁니다. 2. DB 연동 설정 프로젝트가 빌드되면서 sq..
개발자로써 공부하는 동기부여방법(2) 안녕하세요. 오늘은 개발자로써 흑구의 공부 동기부여 방법 두번째입니다. 지난 시간에는 제 블로그 url의 어원인 sas(Slow And Steady)에 기반하여 작성했었는데요. 오늘도 이렇게 꾸준히 올려보고자 합니다. ^^ https://sas-study.tistory.com/352 일단 오늘의 동기부여방법의 키워드는 열등감과 자기반성입니다. 개발자로써 혹은 프로그래머로써 항상 마주하게되는 것이 기술적 토론일 것입니다. 이것은 신입개발자 or 취준생에게는 기술면접이 될 수도 있고, 경력개발자는 특정 회사 혹은 개발자와의 서로 다른 경험에서 오는 다름에 대한 이야기가 될 수 있습니다. 연차가 낮은 사람이 있을 것이고, 높은 사람이 있을 것입니다. 상대적으로! 확률적으로..
개발자로써 공부하는 흑구만의 동기부여방법(1) 안녕하세요. 오늘은 개발자로써 어떻게 동기부여를 팍팍 불어넣으면서 공부에 매진할 수 있는지에 대하여 이야기해보려합니다. 제가 감히 이런 부분을 이야기한다고해서 많은 영향력이 있진 않겠지만 세상에는 다양한 개발자가 존재하고 그 다양함에서 많은 소스들이 발생하기 때문에 이번 글이 누군가에겐 소스가 되길 바라며 시작해보겠습니다. 급하지 않기를!! 일단 먼저 제 블로그의 url을 보시면 sas-study라는 도메인으로 시작하는 것을 볼 수 있을 것입니다. 주변분들이 제가 블로그를 하는 것을 알지만 한번도 이 부분에 대해서 질문을 하시거나 제가 따로 말씀드린적이 없어서 최초공개!! 가 되는데요. Slow and Steady의 약자입니다. url의 마지막 path를 보..
안녕하세요. 최근 사이드 프로젝트를 하면서 JPA를 활용하고 있는데요. JPA가 MyBatis를 추격하며 꽤 많이 채용공고나 라이브러리 검색 비율을 높여가고 있는걸로 알고있습니다. 이에 따라 저도 사이드 프로젝트에서 JPA를 활용해서 프로젝트를 진행중입니다. 그 중 스펙이 Spring Boot 2.2 버전, Spring Data JPA, H2 Database 를 이용하여 개발하고 있습니다. 일단 H2 데이터베이스는 Test 에서만 활용하고자 하였으나 AWS RDS 비용이 얼마나 나오게 될지 두려워서.. 이미 EC2로 임시서버 배포한 후, IOS/React 웹이 붙어서 AWS 요금이 얼마나 과금될지 두려워서 H2를 쓰려고 하였습니다. 그렇게 발생된 문제는! 서버를 내렸다가 배포하게되면 그동안 쌓였던 데이터..
문제 설명 다음과 같은 2차원 문자열 배열이 주어질 때, [A, B, C, E] [S, F, C, S] [A, D, E, E] 지정 문자열 "ABCCED" 에 대하여 위의 배열에서 찾아서 존재하는지를 반환하는 dfs 풀이를 작성하시오. 단, 지정 문자열을 찾을 때 문자열은 연결되어있어햐 한다. 결과 : true 나의 풀이 public static void main(String[] args) { String[][] grid = { {"A","B","C","E"}, {"S","F","C","S"}, {"A","D","E","E"} }; Main m = new Main(); String word = "ABCCED"; System.out.println(m.solve(grid, word)); } int m, n;..
문제 설명 시작 문자 : hit 끝 문자 : cog 문자 리스트 : hot, dot, dog, lot,log, cog 다음과 같이 parameter가 제공되고 시작 문자에서 한글자씩만 바꿔서 문자리스트에 있는 문자들을 통해 끝문자인 cog로 변경되는데까지의 횟수를 구하시오. 예를 들어, hit ->(ait..zit , hat..hzt , hia..hiz) -> hot -> dot -> dog -> log -> cog. => 총 5회. 나의 풀이 class Main { public static void main(String[] args) { Main a = new Main(); String beginWord = "hit"; String endWord = "cog"; List wordList = Arrays..