728x90

java 129

[Java] 열거형(enums)

자바의 정석 챕터 13을 읽고 정리 1. 열거형이란? - 열거형은 서로 관련된 상수를 편리하게 선언하기 위해 사용 - 자바의 열거형은 타입에 안전한 열거형 - 실제 값이 같아도 타입이 다르면 컴파일 에러 발생 class Card { static final int HELLO = 0; static final int WORLD = 1; static final int HL = 0; static final int WR = 1; final int kind; final int num; } // 열거형으로 표현 class Card { enum Kind { HELLO, WORLD } enum Value { HL, WR } final Kind kind; final Value value; } - 비교를 하면 if (Card..

[Spring] 스프링시큐리티 OAuth2.0 적용해보기(Naver)

이번엔 네이버 로그인을 작업해보려 한다. 지난 포스팅을 참고하고, 이어서 작업하려 한다. https://devhooney.tistory.com/101 [Spring] 스프링시큐리티 OAuth2.0 적용해보기(Facebook) 이번엔 페이스북 로그인을 작업해보려한다. 지난 포스팅에 사용했던 코드에 이어서 작업하려한다. https://devhooney.tistory.com/100 [Spring] 스프링시큐리티 OAuth2.0 적용해보기(Google) 구글, 페이스북, 네 devhooney.tistory.com 1. 네이버 개발자 센터 - 상단 메뉴의 Application에서 애플리케이션 등록 클릭하여 이름을 작성하고 사용 API selectbox에서 네이버 로그인 선택 - checkbox가 나오면 회원이름,..

[Spring] 스프링시큐리티 OAuth2.0 적용해보기(Facebook)

이번엔 페이스북 로그인을 작업해보려한다. 지난 포스팅에 사용했던 코드에 이어서 작업하려한다. https://devhooney.tistory.com/100 [Spring] 스프링시큐리티 OAuth2.0 적용해보기(Google) 구글, 페이스북, 네이버 로그인을 적용해보려고 한다. 지난 포스팅에 사용했던 코드에 이어서 작업하려한다. https://devhooney.tistory.com/99 [Spring] 스프링시큐리티 예제 이전에 작성한 포스팅은 단순 devhooney.tistory.com 1. 페이스북 개발자 사이트 - 사이트에 접속해서 내 앱 > 앱 만들기 클릭 - 소비자 선택 - 표시 이름 작성, 선택된 비즈니스 관리자 계정 없음 선택 후 앱 만들기 - 만들어진 앱 선택 후 Facebook 로그인 빠..

[Spring] 스프링시큐리티 OAuth2.0 적용해보기(Google)

구글, 페이스북, 네이버 로그인을 적용해보려고 한다. 지난 포스팅에 사용했던 코드에 이어서 작업하려한다. https://devhooney.tistory.com/99 [Spring] 스프링시큐리티 예제 이전에 작성한 포스팅은 단순히 책에 있는 내용을 정리한 것이었는데, 이번엔 직접 코드를 짜보면서 복습해보려고 한다. 1. 라이브러리 설치 implementation 'org.springframework.boot:spring-boot-starter-secur.. devhooney.tistory.com 1. 구글 api console https://console.cloud.google.com/apis/dashboard Google 클라우드 플랫폼 로그인 Google 클라우드 플랫폼으로 이동 accounts.go..

[Spring] 스프링시큐리티 예제

이전에 작성한 포스팅은 단순히 책에 있는 내용을 정리한 것이었는데, 이번엔 직접 코드를 짜보면서 복습해보려고 한다. 1. 라이브러리 설치 implementation 'org.springframework.boot:spring-boot-starter-security' 2. IndexController 생성 - controller 패키지 생성 후 IndexController 생성 @GetMapping({"", "/"}) public String index() { return "index"; } - resources/template/index.html 생성 인덱스페이지입니다. 3. user, admin 메소드 생성 - IndexController에 두 개의 메소드를 만들어 준다. @GetMapping("/use..

[JPA] LIKE 정리

SpringData JPA를 사용하여 개발한 기능에서 에러가 발생 - 이유는 select되어야 하는 데이터가 2개 이상이라.. - 쿼리문이 where data like '%조건'을 원했는데 contains를 사용했더니 앞 뒤로 %가 붙었다. - 이참에 정리해놓으려 한다. Contains - 파라미터로 사용되는 data변수에 자동으로 앞 뒤로 '%'가 붙어서 DB조회를 한다. List dataList = findByDataContains(data); List dataList = findByDataContaining(data); List dataList = findByDataIsContaining(data); Like - 직접 파라미터에 '%'를 넣어주어야 한다. List dataList = findByDa..

[Java] 예외처리

자바의 정석 챕터 8을 읽고 정리 개발하다가 '내가 예외처리를 제대로 하고 있는게 맞을까?' 생각이 들어서 책을 보게 됐다.(기초부터 다시 공부하기 위해) 1. 프로그램 오류 - 컴파일 에러: 컴파일 시 발생하는 에러 - 런타임 에러: 실행 시 발생하는 에러 - 논리적 에러: 실행은 되지만, 의도와 다르게 동작하는 것 - 에러: 코드에 의해서 수습될 수 없는 심각한 오류 - 예외: 코드에 의해서 수습될 수 있는 다소 미약한 오류 2. 예외 클래스의 계층구조 - 모든 예외의 최고 조상인 Exception 클래스 3. 예외처리하기 - try-catch - 예외처리의 정의: 프로그램 실행 시 발생할 수 있는 예외에 대비한 코드를 작성하는 것 - 예외처리의 목적: 프로그램의 비정상 종료를 막고, 정상적인 실행상..

[Spring] Message 적용해보기

개발하다보면 한 화면을 여러 언어로 보여줘야 하는 경우가 있다. 언어마다 같은 HTML을 작성하지 않고, 스프링을 이용하여 편리하게 구현해봤다. - 먼저 Bean 등록을 해준다. LocaleConfig라는 파일을 생성하여 작성했다. - @Value값 안에 들어가는 내용은 application.properties에 작성했다. - basename에는 앞으로 여러 언어를 같은 코드로 관리하기 위한 파일인 messages.properties파일의 경로를 넣어주었다. - 나같은 경우 messages/messages를 넣었다. - encoding은 UTF-8을 넣어주었다. - 스프링 부트의 경우 Bean등록을 안해도 된다는 글들이 많았는데, 안해주니 나는 에러가 발생했다.(해주면 이상 없음) @Bean public..

[Spring] Validation 적용해보기

프론트에서만 유효성 검사를 했었는데, 언제든지 우회할 수 있다고 듣고, 서버쪽에서도 유효성 검사하는 로직을 추가하려했다. 근데 스프링에서는 validation이라는 프레임워크로 편하게 할 수 있었다. 그 과정을 남기려고 한다. - 라이브러리 설치(build.gradle) implementation group: 'org.springframework.boot', name: 'spring-boot-starter-validation', version: '2.5.2' - 먼저 회원가입을 한다고 하면 User 엔티티가 필요하다. @Entity @Getter @NoArgsConstructor public class User { @Id @GeneratedValue(strategy = GenerationType.IDEN..

[Spring] 스웨거(Swagger) 라이브러리

기존에는 api 테스트를 위해서 포스트맨을 사용했는데, 스웨거는 서버로 요청되는 api 리스트를 html 화면으로 문서화해서 테스트할 수 있는 라이브러리이다. @RestController를 읽어서 api를 분석해서html문서로 정리해준다. 아주 편리해보인다. - dependency에 아래 두 가지를 넣어준다. implementation group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2' implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2' - 나는 gradle을 사용 중이기 때문에 buid.gradle 파일 안에 넣어줬다. - config..

728x90