본문 바로가기

springboot23

Spring Triangle - POJO, IoC, AOP, PSA POJO Plain Old Java Object 오래된 방식의 자바 오브젝트 클래스나 인터페이스를 상속 받지 않고, 메소드가 추가된 클래스가 아닌 getter, setter 같은 기본적인 기능만 가진 자바 객체를 말한다. 우리는 사람들이 자기네 시스템에 보통의 객체를 사용하는 것을 왜 그렇게 반대하는지 궁금하였는데, 간단한 객체는 폼 나는 명칭이 없기 때문에 그랬던 것이라고 결론지었다. 그래서 적당한 이름을 하나 만들어 붙였더니, 아글쎄, 다들 좋아하더라고. - 마틴 파울러 그렇다고 합니다... POJO는 엄청난 개념이 아니라 적당한 명칭 정도로만 이해하면 됩니다. IoC 제어의 역전 Inversion of Control 제어의 역전이 뭐임! 사실 제어의 역전은 스프링만의 특징이 아니다. 프레임워크의 흔.. 2023. 9. 6.
Docker로 React, Nginx, Spring Boot 컨테이너 배포하기 이전까진 도커 캐싱이 뭔지 모르고 어영부영 Dockerfile 작성하면서 살았다. 예에에에에에에전에 도커를 처음 사용해 프로젝트 진행했을 때 컴퓨터 수명 다 깎아 먹었었다. 코드 수정이 있을 때마다 이미지 재생성을 위한 빌드를 계속했기 때문에 (한 번 빌드 시 20분 씩 걸렸던 기억이다....) 프로젝트 구조는 대충 이렇게 생겼다. ├─docker-compose.yml ├─backend │ ├─Dockerfile │ ├─build │ └─src └─frontend ├─Dockerfile ├─nginx.conf ├─build └─src Spring Boot Dockerfile 그레이들 코틀린 버전이라 kts 확장자로 작성했는데 순수 그레이들이면 .kts를 삭제하면 된다. FROM openjdk:11 AS .. 2023. 6. 9.
[Spring Boot] 6. Developing with Spring Boot (6.1 부터 ~ 6.3 까지) | 공식 문서 번역 영어 공부 && 취미로 공식 문서 번역합니다. 의역, 오역 주의!!!!!!!! 영어 못함 원문 : https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using Spring Boot Reference Documentation This section goes into more detail about how you should use Spring Boot. It covers topics such as build systems, auto-configuration, and how to run your applications. We also cover some Spring Boot best practices. Although there is.. 2023. 5. 26.
[서평 23년-21] 스프링 부트 실전 활용 마스터 독서기간_2023년 2월 26일 ~ 2023년 3월 저자_그렉 턴키스트 출간일_2021년 5월 28일 들어는 보았나 리액티브 스트림 개발. 입문자에겐 절대 비추천하는 책이다. "실전 활용"이 제목인만큼 일반적인 Spring Boot를 공부하지 않는다. WebFlux라는 라이브러리를 이용해 스트림 통신 개발을 다룬 책이다. 마치 Spring Boot가 리액티브 패러다임이 기본인 것처럼 알려준다. 친절한 설명과 따라 치기 쉬운 예제 덕분에 많은 공부가 되었다. 현직의 ㅎ도 시작 못한 백수지만 현직자가 공부하기 좋은 책같다. 음 그냥 읽어보세요! 자신이 얼마나 무지한지를 깨닫게 됩니다. 개발에 발을 담굴수록 느끼는 거지만 끝이 없다. 취업해서도 꾸준히 책 읽고 공부하는 개발자가 되어야지. 하고 싶은 건 많은데.. 2023. 5. 15.
[Spring Boot] 테스트 코드에서 프로퍼티 NullPointerException 오류 해결 @Service public class TokenService { @Value("${secret}") private String secretKey; public String generateJWT(MemberInfoDto info) { // ... Jwts.builder() .setHeader(headers) .setClaims(payloads) .setIssuedAt(new Date(System.currentTimeMillis())) .setExpiration(new Date(System.currentTimeMillis() + 60 * 1000 * 60)) .signWith(SignatureAlgorithm.HS256, secretKey.getBytes()) .compact(); } //... } 토큰 .. 2023. 4. 6.
IntelliJ 사용 시 gradle 프로젝트 out, build 폴더 차이 IntelliJ 사용 시 build 하면 out 폴더와 build 폴더가 생성 *될 수도* 있다. 두 개의 폴더는 동일한 클래스 파일을 소유하고 있다. 무슨 차이가 있을까? out - 폴더는 인텔리제이 빌드시에 컴파일한 class를 저장하는 폴더 build - 폴더는 gradle 빌드시에 컴파일한 class를 저장하는 폴더 예전에 AsciiDoc을 이용해 REST Doc을 만드는 작업을 했는데 프로젝트를 진행할 때 이상한 점이 있었다. 아스키독 테스트 코드를 구현하고 빌드를 했는데 예상대로라면 build폴더 하위에 *.ascii 파일이 생성되어야 했는데 build 폴더가 없는 것이다. 이제 그 이유를 알았다... IntelliJ에는 IDE 자체에서 빌드하는 기능을 제공한다. 평상적으로 IntelliJ 자.. 2023. 4. 5.
[Spring Boot] 개인 정보가 담긴 Jwt 토큰 발급 후 Cookie로 반환하기 oAuthService에 Jwt 토큰을 발급하는 메서드를 추가했다. public String generateJwtToken(MemberInfoDto info) { Map payloads = new HashMap(); Map headers = new HashMap(); headers.put("alg", "HS256"); headers.put("typ", "JWT"); payloads.put("name",info.getName()); payloads.put("picture", info.getPicture()); payloads.put("oauthId",info.getSub()); return Jwts.builder() .setHeader(headers) .setClaims(payloads) .setIssue.. 2023. 4. 4.
[Spring Boot] Security 없이 OAuth2 Google에서 받은 id_token 사용해 회원 정보 저장하기 2023.03.27 - [Project/모면] - [Spring Boot] Security 없이 OAuth2로 Google 로그인 구현, 유저 정보 얻기 이전 시간에 access_token을 발급받아오는 작업까지 마쳤다. 이제 id_token 안의 정보를 복호해 으로 만들어버리자. 먼저 RestTemplate을 이용해 POST 요청을 보내는 코드를 수정했다. ResponseEntity responseEntity = restTemplate .postForEntity(GOOGLE_TOKEN_URL, params, GoogleOAuthResponseDto.class); package com.momyeon.backend.dto; import lombok.AccessLevel; import lombok.Gette.. 2023. 4. 3.