분류 전체보기 126

Homebrew mysql 설치

mac 에서 mysql 을 설치하는 방법 mysql 홈페이지에서 dmg 파일을 다운 받아서 설치 homebrew 패키지 관리자를 이용하여 설치 평소에는 mysql 8.0을 사용하였지만 mysql 5.7 사용할 일이 있어 5.7을 설치해보았다. # brew 로 설치할 수 있는 mysql 관련 프로그램들을 검색해 볼 수 있음 brew search mysql brew install mysql@5.7 # mysql 서버 시작 mysql.server start # mysql 데몬 실행 brew services start mysql # 데몬으로 실행중인 프로그램 확인 brew services list 이때 mysql.server start 시 아래와 같은 오류 때문에 서버가 실행되지 않았다. mysql 이 실행되고..

JAVA 2022.12.07

JWT

Access token 발급 사용자가 서버에 접근한다. JwtAuthenticationFilter 가 JwtTokenProvider를 통해 토큰을 검증한다. 인증 과정에서 토큰이 비정상적이면 JwtAuthenticationEntryPoint 를 호출하고 인가 과정에서 문제가 생기면 JwtAccessDenidedHandler, 정상적이면 CustomOAuth2UserService 호출한다. 또한 정상적일경우 SecurityContextHolder에 유저정보가 담김(filter 참고) 토큰이 정상적이면 oauth 로그인 후처리 과정으로 CustomOAuth2UserService 호출 됨 위에서 OAuth2 로그인이 성공하면 SuccessHandler 실패하면 FailureHandler 가 호출된다. Refr..

JAVA 2022.11.30

spring boot 프로젝트 생성과 사용 이유

spring boot 프로젝트 생성 프로젝트 생성 시 아래 url 주소에서 생성 https://start.spring.io/ 이때 spring boot 버전을 고를수 있는데 버전 옆에 snapshot 이 붙은건 아직 만들고 있는 단계, m1 이런건 정식 릴리즈가 되지 않은 단계, 아무것도 안붙어있는게 정식 릴리즈 된것 웬만하면 정식 릴리즈된 버전을 선택하자! 여기서 사용되는 gradle은 버전 설정하고 라이브러리를 땡겨오는 역할이라는 정도만 이해! dependencies를 선택하고 프로젝트 생성! 프로젝트 폴더 설명 .idea : intellij가 사용하는 설정 파일 gradle/wrapper/ : gradle과 관련된 폴더 preference 에서 gradle 검색! 아래 설정을 gradle에서 int..

JAVA 2022.10.31

google oauth

기존의 security login을 만들때는 로그인이 완료가 되면 코드를 받아서 다시 액세스 토큰을 요청하고 그 토큰으로 사용자 정보를 받아오는 프로세스를 사용했다. oauth는 이미 코드는 받았고 알아서 액세스 토큰을 요청하고 정보까지 받아온다 . Spring Security 자기만의 시큐리티 세션이 있음 그 시큐리티 세션에는 Authentication 객체밖에 들어갈수 없다.( controller에서 DI를 해줄수 있음) 그 Authentication 안에는 두가지 타입이 들어갈수 있다 → UserDetails 와 OAuth2User 타입 UserDetails는 일반 로그인, OAuth2User oauth 로그인을 진행할때 authentication안에 들어오게되는 타입이다. 근데 이걸 일반 로그인일..

JAVA 2022.10.06

LocalDate 와 LocalTime

java 8 이상 부터는 date 와 time 이 LocalDate , LocalTime 클래스를 사용한다. java.time 패키지에 포함된 대부분의 클래스는 이 두 클래스를 확장한 것이 많다. 날짜와 시간 객체의 생성 LocalDate와 LocalTime 클래스는 객체를 생성하기 위해 now()와 of() 메소드를 제공한다. now() : 현재 날짜 혹은 시간 of(): 전달된 인수를 가지고 특정 날짜와 시간을 표출해준다. LocalDate today = LocalDate.now(); LocalTime present = LocalTime.now(); LocalDate birthDay = LocalDate.of(1982, 02, 10); LocalTime birthTime = LocalTime.of(0..

JAVA 2022.08.25

문자열 내 마음대로 정렬하기

문자를 문자열로 변환하기( string to char[] || string to string[] ) string to char[] → toCharArray() 이용 string to string[] → {문자}.split(””) 이용 for(int i=0; i< strings.length; i++){ // 문자를 문자열로 변환 char[] chr = strings[i].toCharArray(); // 문자열 중 주어진 인덱스 위치에 있는 문자를 다시 string으로 변환 String str = Character.toString(chr[n]); // map에 key값은 중복이 안됨 참조 하고 있기 때문에! // 따라서 for문 안에 선언해주어 계속적으로 초기화한다. Map map = new HashMap(..

CT 2022.08.25

애플리케이션 테스트 DB 구분

docker 사용하여 애플리케이션 DB 생성 # docker 로 postgres 컨테이너 실행 # -e 는 환경변수 설정 POSTGRES_PASSWORD를 pass로 사용하겠다. # 마지막 postgres가 이미지 docker run --name ndb -p 5432:5432 -e POSTGRES_PASSWORD=pass -d postgres # docker 컨테이너 들어가기 docker exec -i -t ndb bash su - postgres # db 접속 psql -d postgres -U postgres 우리는 애플리케이션에서 postgresql을 사용하고 test에서는 h2 DB를 사용해야한다면? test 에 관한 설정파일을 따로 만들어줘야한다! 1. test 디렉토리 하위에 resources..

JAVA 2022.08.18

spring hateoas

rest api 에서 hateoas 가 필요한 이유? → rest의 개념 자체가 http url를 통해 자원(resource)을 명시하고 http method(get, post, put, delete)를 통해 해당 자원에 대한 crud operation을 적용 하는 것을 의미한다. 이때 url 즉 링크를 위해서 우리는 hateoas를 사용한다. hateoas사용시 spring boot 가 hateoas 설정을 자동으로 해주기 때문에 우리가 따로 설정해 주지 않아도 된다. hateoas란? rest api를 사용하는 클라이언트가 전적으로 서버와 동적인 상호작용이 가능하게 하는 것을 말한다. 이러한 방법은 클라이언트가 서버로부터 어떠한 요청을 할 때, 요청에 필요한 url를 응답에 포함 시켜 반환하는것으로 ..

JAVA 2022.08.01