본문 바로가기

Programming/Spring Boot

(7)
[Spring Boot] Spring Security JWT Token JWT(Json Web Token) Json 객체를 통해 안전하게 정보를 전송할 수 있는 웹표준 Json 객체를 암호화하여 만든 String 값 기본적으로 암호화가 되어 있어 변조하기 어려움 JWT를 이용하여 로그인 구현 1. gradle dependency 추가 - build.gradle dependencies { implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'io.jsonwebtoken:jjwt:0.9.1' } 2. 비밀키 설정 - application.properties jwt.secret=thisiskey 3. JwtTokenProvider 생성 Jwt 생성하고, 유효성을 검증하는 컴포넌트..
[Spring Boot] Spring Security PasswordEncoder PasswordEncoder Spring Sercurity에서 지원하는 비밀번호 단방향 암호화 인터페이스 public interface PasswordEncoder { // 비밀번호 암호화 String encode(CharSequence rawPassword); // 암호화되지 않은 비밀번호(raw)와 암호화된 비밀번호(encoded)가 일치하는지 비교 boolean matches(CharSequence rawPassword, String encodedPassword); // 암호화된 비밀번호를 다시 암호화하고자 할 경우 return true default boolean upgradeEncoding(String encodedPassword) { return false; } } BcryptPasswordE..
[Spring Boot] Swagger 3.x 적용 및 접속 Swagger OAS(Open Api Specification)을 위한 프레임워크 API 문서화를 쉽게 할 수 있도록 도와줌 파라미터를 넣어 실제로 어떤 응답이 오는지 테스트 가능 OpenAPI를 구현하기 위한 도구 세트 Open API RESTful API 설계를 위한 업계 표준 사양 Spring Boot에 Swagger 적용하기 1. gradle dependency 추가 - build.gradle dependencies { implementation 'io.springfox:springfox-boot-starter:3.0.0' implementation 'io.springfox:springfox-swagger-ui:3.0.0' } 2. Swagger Config 설정 @Configuration pub..
[Spring Boot] Jackson과 Gson Jackson Gson 공통점 Java에 대한 JSON 데이터 바인딩을 지원하는 완전한 라이브러리 차이점 Spring Framework에 내장됨 라이브러리를 수동으로 추가해야 함 Json 뿐만 아니라 XML과 YAML도 지원 속도가 빠르고 유연하여, 고용량의 데이터를 파싱할 때 좋음 비교적 가벼움 직렬화 json -> java object (new ObjectMapper()).writeValueAsString(java_object); (new Gson()).toJson(java_object); 역직렬화 java object -> json (new ObjectMapper()).readValue(json_data, java_object.class); (new Gson()).fromJson(json_data,..
[Spring Boot] H2 Database 설치 및 접속 H2 DB 자바 기반의 오픈소스 관계형 데이터 베이스 관리 시스템(RDBMS) Spring Boot가 지원하는 인메모리 데이터베이스 따로 설치가 필요 없으며, 어플리케이션을 재시작할 때마다 초기화 로컬 테스트 환경에서 많이 사용함 Spring Boot H2 DB 설치 및 접속하기 1. gradle dependency 추가 - build.gradle dependencies { runtimeOnly 'com.h2database:h2' } 2. application.properties 설정 추가 # h2 사용 여부 spring.h2.console.enabled=true # h2 console 접속 path spring.h2.console.path=/h2 # jpa sql 출력 여부 spring.jpa.show..
[Spring Boot] thymeleaf-layout-dialect 적용하기 thymeleaf view template engine 서버상에서 동작하지 않아도 됨 (Natural Template) 순수 HTML 구조를 유지 Spring에서도 공식적으로 thymeleaf 사용을 권장하고 있음 thymeleaf-layout-dialect thymleaf에서 제공하는 layout 라이브러리 spring boot에 thymeleaf-layout-dialect 적용하기 1. gradle dependency 추가 - build.gradle dependencies { implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5' implementation 'org.springframework.boot:spring-boot-sta..
[Spring Boot] Spring Boot의 구조와 역할 Controller @RestController public class TestController { @Autowired PersonService personService; @GetMapping("/test1") public String test1(){ String result = ""; List people = personService.findAll(); for(PersonEntity item: people){ result += item.getId()+" "+item.getName()+" " +item.getAge()+" "+item.getAddress() +" / "; } return result; } @GetMapping("/test2") public String test2(){ String res..