전체 글
-
[spring-boot] 블로그를 만들자. (8) GitHub login카테고리 없음 2023. 4. 21. 15:27
이번시간에는 로그인을 해보자. 우리는 github로 로그인을 할텐데 페이스북이나 트위터도 비슷할 듯 하다. 우리는 인증서버는 github에 넘기고 리소스만 관리하며 된다. 일단 시큐리티 관련해서 디펜더시를 받자. org.springframework.boot spring-boot-starter-security org.springframework.security.oauth spring-security-oauth2 spring security는 그렇게 간단하지만은 않다. 그래도 Spring boot를 쓰면 기존에 어려웠던 설정들이 조금이나마 간단해 진 것을 알 수 있다. 위와 같이 디펜더시를 받았다면 yaml이나 properties 파일 설정을 해야 한다. security.oauth2.client.client..
-
Spring Boot Method Security카테고리 없음 2023. 4. 21. 15:27
오늘은 제목 그대로 Spring의 메서드로 권한을 체크해보자. 예를들어 어떤 메서드에 권한을 부여해 주는 것이다. 일단 테스트를 하기 위해 oauth2 서버도 아주 간단하게 테스트만 할 수 있을 정도로만 만들자. Spring boot 경우에는 쉽게 할 수 있다. 디펜더시부터 받자. org.springframework.security.oauth spring-security-oauth2 org.springframework.boot spring-boot-starter-security 일단 시큐리티만 적었다. 웹과 기타 등등 나머지는 알아서 넣길.. @SpringBootApplication @EnableAuthorizationServer @EnableResourceServer @EnableGlobalMethod..
-
[spring-boot] 블로그를 만들자. (7) 캐시와 에러페이지카테고리 없음 2023. 4. 21. 15:27
이번시간에는 Spring boot에서 지원해주는 캐시와 spring boot의 에러 페이지를 알아보자. Spring boot 에서는 다양한 캐시들을 지원한다. 기본적으로 아무 설정 하지 않았을 경우에는 ConcurrentMapCacheManager의 ConcurrentHashMap을 사용해서 캐시를 사용하고 JSR-107 (JCache) 명세에 따른 캐시도 지원한다. 그 구현체들은 EhCache, Hazelcast, Infinispan, apache ignite 등이 있다.(이 외에도 더 있던거 같았다.) 이외에도 JSR-107 표준 명세로는 따르지 않았지만 Redis, Caffeine, Guava등이 존재하고 있다. Caffeine 캐시 같은 경우에는 JCache도 지원한다. 일단 캐시를 사용할 수 있..
-
[spring-boot] 블로그를 만들자. (6) 댓글과 Navigation카테고리 없음 2023. 4. 21. 15:27
벌써 6번째 시간이 되었다. 몇 번 남지 않을 듯하다. 그리고 화면은 거의 다 만들었다. 오늘 댓글만 하면 화면에 추가할 내용은 없고 수정할 내용만 조금 있을 듯하다. 그럼 시작해보자. 포스팅에 댓글이 있어야 하므로 post.html에 다음과 같이 추가하자. Leave a Comment: Submit wonwoo Posted 3 weeks ago This is really awesome snippet! 포스트의 content밑에 위의 html을 넣으면 된다. 첫 번째 form은 댓글을 입력하는 폼이고 두 번째 폼은 댓글이 존재 한다면 댓글을 보여주고 삭제도 할 수 있는 폼이다. 지금 현재는 권한도 유저도 없다. 로그인을 하면 살짝 바뀔거 같다. 왜냐면 자기가 입력한 것만 삭제 가능하게 만들어야 되니 로그..
-
[spring-boot] 블로그를 만들자. (5) markdown, catetory카테고리 없음 2023. 4. 21. 15:27
오늘은 글을 쓰기 위한 markdown과 catetory 화면은 만들어보자. markdown을 만들기 전에 catetory 부터 한번 보자. 서버쪽은 다 만들었으니 view만 만들면 될 것같다. templates/category 라는 폴더를 만들고 list.html 파일을 만들t자. 그리고 아래와 같이 html코드를 넣자. ... //기타 write # name date 카테고리를 등록할 수 있는 페이지로 이동하는 버튼이 상단에 있다. 우리가 일반적으로 JSP를 할때 하던 그런 코드와 비슷하다. 카테고리명을 클릭하면 상세 페이지로 이동할 수 있다. 상세 페이지에서는 변경 또는 삭제가 가능하게 만들어야 된다. 일단 새로 등록 할 수 있는 페이지를 만들어 보자. ...//기타 카테고리 명 Submit 위의 ..
-
[spring-boot] 블로그를 만들자. (4) thymeleaf카테고리 없음 2023. 4. 21. 15:27
첫 번째 시간에 말했듯이 thymeleaf 버전은 2.1이다. Spring Boot1.4인 경우에는 thymeleaf3 도 지원 하지만 thymeleaf 서드파트 라이브러리가 아직 많이 지원하지 않는거 같아서 일단 2.1로 했다. 그리고 다른거 templates 보다 자료들이 더 많은거 같아서 thymeleaf로 정했다. Spring Boot 경우에는 따로 설정할 필요 없다. 클래스패스에 라이브러리만 있다면 boot의 자동설정이 알아서 기본설정을 해준다. 아래와 같이 spring-boot-starter-thymeleaf 를 디펜더시 받자. org.springframework.boot spring-boot-starter-thymeleaf 간단하게 hello world를 찍어보자. public class I..
-
[spring-boot] 블로그를 만들자. (3) Category 와 Comment카테고리 없음 2023. 4. 21. 15:27
블로그 만들기 3번째 시간이다. 이번시간에는 post에 대한 카테고리 와 댓글을 만들어보자. post에는 여러개의 category를 넣을 수도 있겠지만 여기서는 한개의 category만 선택할 수 있고 댓글 경우에는 여러개의 입력 할 수 있게 만들어 보았다. 물론 컬럼들은 바뀔 수 있으나 큰 흐름은 대충 위와 같다. 만약 카테고리도 여러개를 넣고 싶다면 매핑테이블을 만들어서 하면 될 듯하다. post와 category 와의 관계는 다대일 관계이다. 반대로도 생각할 수 도 있는데 category 와 post의 관계는 일대다 다. 보통의 db의 경우에는 양방향으로 검색이 가능하다. 예를들어 category기준으로 post를 검색할 수도 있고 post기준으로 category를 검색 할 수 도 있다. 하지만 객..
-
spring jpa (Hibernate) 요청당 쿼리 count카테고리 없음 2023. 4. 21. 15:27
회사 프로젝트가 거의 막바지로 이르면서 성능과 관련된 코드들을 리팩토링 하는중이다. 거의 대부분 jpa와 관련 있을 듯해서 jpa 튜닝(?) 이라고 해야 되나? 아무튼 그러고 있다. orm이 아닌 mapper 같은 경우에는 개발하면서 대충 몇번의 쿼리를 날리는지 감으로 알 수 있지만 jpa같은 경우에는 언제 어디서 쿼리들이 n+1이 될지 모르니 계속 모니터링을 하기 귀찮아서 로컬에서 테스트하거나 테스트 서버에 올릴때 요청당 쿼리를 count하는 것을 만들었다. 설명보다는 코드를 보자. @Slf4j @RequiredArgsConstructor public class RequestCountInterceptor extends HandlerInterceptorAdapter { private final Hiber..