전체 글 22

오라큭큭큭

인덱스란? 색인 원하는 값을 빠르게 찾을 수 있다. 인덱스는 테이블과 맵핑되어 있다. 맵핑된 곳으로 가서 나머지 데이터를 꺼내오는 방식 인덱스 컬럼을 기준으로 정렬되어 저장된다 -> 특정 데이터를 조회 시 시작점을 지정해서 검색할 수 있다. 보통 테이블은 데이터가 물리적으로 흩어져 저장되어있다. -> 인덱스 없이 특정 데이터를 조회하려면 테이블을 full scan 하여 값을 찾아온다. 어떤 컬럼을 인덱스로 지정하는게 좋을까? where절에 자주 등장하는 컬럼 - 조건에 대한 데이터를 찾을 때 효율적이다라고 했다. order by 절에 자주 등장하는 컬럼 - 인덱스는 소팅되어 저장되기 때문에 따로 또 정렬할 필요가 없어진다. select 절에 자주 등장하는 컬럼 - 인덱스는 단일컬럼뿐 아니라 여러 컬럼을 ..

카테고리 없음 2023.02.19

스프링 시큐리티 참고 링크

1. https://dev-coco.tistory.com/m/174 Spring Security의 구조(Architecture) 및 처리 과정 알아보기 시작하기 앞서 스프링 시큐리티에서 어플리케이션 보안을 구성하는 두 가지 영역에 대해 간단히 알아보자. 인증(Authentication)과 인가(Authorization) 대부분의 시스템에서는 회원을 관리하고 있고, dev-coco.tistory.com 2. https://kimchanjung.github.io/programming/2020/07/02/spring-security-02/ [Spring Security] 스프링시큐리티 설정값들의 역할과 설정방법(2) 스프링시큐리티의 여러가지 설정값들의 역할과 설정방법을 상세히 알아봅니다. Spring Secu..

머스태치 오류

com.samskivert.mustache.MustacheException$Context: No method or field with name 'post' on line 10 첫 줄에 친절히 post 메소드 또는 필드를 찾을 수 없다고 알려줬는데 service, controller 단만 찾아보고 있었다... 알고보니 컨트롤러에서는 posts 로 보내주고있는데 머스태치에서는 post로 가져오고 있었음.. ㅠㅠ post -> posts로 바꿔주니 정상동작...ㅠㅠ 그래..새벽이라 그랬을거야 잠이덜깨서 ㅋㅋ 담부턴 오류메세지 잘 확인하자! 글 번호 com.samskivert.mustache.MustacheException$Context: No method or field with name 'post' on l..

스프링부트 2022.08.09

inteliJ 테스트 코드 작성 중 에러

1. No tests found for given includes: [com....~~] > test할때 intelliJ IDEA 를 사용하겠다고 설정을 변경해주면 됨 2.롬복(lombok) 테스트 중 에러 롬복이 제대로 작동 안하는거같음 내가 설치한 inteliJ에는 롬복이 기본 플러그인으로 설치되어있었음 annotationProcessor(~~)를 dependencies에 추가해주고 다시 테스트 실행하니 잘되었음 롬복을 사용하려면 아래 두개 내용이 dependencies에 추가되어야 함. implementation('org.projectlombok:lombok') annotationProcessor('org.projectlombok:lombok')

스프링부트 2022.08.02

스프링부트 gradle 설정

build.gradle 을 다음과 같이 설정하니 exception 발생 원인: gralde 7 버전에서는 compile -> implementation 으로 사용해야함 buildscript { ext { springBootVersion = "2.1.9.RELEASE" } repositories { mavenCentral() jcenter() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' apply plugin: ..

스프링부트 2022.07.31

[스프링부트] 프로젝트 생성

1. Spring Initializr로 프로젝트를 생성한다. https://start.spring.io/ 아래와 같이 필요한 Dependencies를 추가해주었다. 2. 생성된 프로젝트를 인텔리제이에 import 해주었다. 3. main메소드가 실행이 잘 되는지 확인해준다. 톰캣이 실행이 잘되는지 localhost:8080으로 접속해본다. 톰캣이 잘 실행된것을 확인 할 수 있다. 4. lombok을 사용하기위해 필요한 설정을 해준다. Settings > Annotation Professors에서 Enable annotation processing을 체크해준다. 이후 lombok이 잘 실행되는지 확인해준다. 확인은 임의의 class를 생성하고 getter setter가 잘 동작하는지 확인해준다. 프로젝트 ..

스프링부트 2022.03.18

클라이언트 요청 처리 순서

Client 요청이 들어오면 등록된 Filter를 거친다. 필터를 거친 후 디스패처서블릿이 요청을 받게된다. 디스패처서블릿은 URL과 요청정보를 가지고 핸들러 매핑으로부터 핸들러(컨트롤러)를 얻어낸다. 이후 등록되어있는 핸들러 인터셉터의 preHandle 메소드를 실행한다. 메소드 실행 이후 컨트롤러가 실행된다. 컨트롤러를 통해 모델과 뷰 정보를 디스패처 서블릿에게 전달하는데 이 중간에서 핸들러 인터셉터의 postHandle 메소드가 실행된다. 메소드 실행 이후 디스패처서블릿은 건네받은 뷰 정보를 가지고 뷰 리졸버로부터 뷰를 얻어낸다. 뷰로 결과를 만들어 응답한다.

Spring Framework 2022.01.28

핸들러 인터셉터(Interceptor)

핸들러 매핑의 역할 URL과 요청 정보로부터 컨트롤러 빈을 찾아준다. DispatcherServlet으로부터 매핑 작업을 요청받으면 그 결과로 핸들러 실행 체인(HandlerExecutionChain)을 돌려준다. 이 핸들러 실행 체인은 하나 이상의 핸들러 인터셉터를 거쳐서 컨트롤러가 실행될 수 있도록 구성되어 있다. 인터셉터(Interceptor)란? DispatcherServlet에서 Handler(컨트롤러)를 호출하기 전과 후에 request와 response를 참조하거나 가공할 수 있는 일종의 필터다. 서블릿 필터와 쓰임새가 유사하기 때문에 둘 중 어떤것을 사용할지 신중히 선택해야한다. 컨트롤러에 공통적으로 적용할 부가기능이라면 핸들러 인터셉터를 사용하는 것이 좋다. 서블릿 필터와 차이점 Http..

Spring Framework 2022.01.28

Properties 값 져올때 오류

DB driver, url, username, password 를 properties 파일에 넣고 @Value 어노테이션을 이용하여 값을 불러오게 하여쓴데 자꾸 Cannot load JDBC driver class '${..이름..}' 에러가 발생했다. 콘솔에 찍어보니 driverClassName를 포함한 properties에 등록한 값을 못가져오고 있었다. 알고보니 properties를 불러오는 코드를 config파일에 넣어주지 않아서 생기는 에러였다. @PropertySource에 properties 경로를 추가해주니 properties 값들을 잘 가져왔다. @Configuration @PropertySource("classpath:application.properties") @EnableTransa..

Spring Framework 2022.01.14