Peony의 기록 창고 🌼
article thumbnail
[JPA 활용1] 프로젝트 환경설정
SpringBoot/JPA 활용1 2023. 9. 12. 00:51

프로젝트 환경설정 https://start.spring.io/ Dependencies spring-boot-starter-web 톰캣, 스프링 웹 MVC 등 지원 spring-boot-starter-thymeleaf 뷰 단을 SSR로 제공하는 타임리프 템플릿 엔진 Spring-boot-starter-data-jpa aop, jdbc (HikariCP 커넥션 풀), 하이버네이트 , 스프링 데이터 jpa 등 지원 spring-boot-starter(공통) 스프링 부트 + 스프링 코어 + 로깅 등 지원 테스트 라이브러리 spring-boot-starter-test junit, mockito, assertj, spring-test 핵심 라이브러리 스프링 MVC 스프링 ORM JPA, 하이버네이트 스프링 데이터 ..

[구름톤 챌린지] Day 7 구름 찾기 깃발
Algorithm/구름톤 챌린지 2023. 8. 27. 20:11

문제 구름 찾기 게임은 한 변의 길이가 N인 격자 모양의 게임판 M에서 진행하는 게임이다. 게임판의 일부 칸에는 구름이 숨겨져 있고, 게임판에 숨겨진 모든 구름의 위치를 찾으면 게임에서 승리할 수 있다. 구름 찾기 게임의 제작자인 플레이어는 조금 더 쉽게 구름을 찾을 수 있도록 도와주는 깃발을 게임판 위에 설치하려고 한다. 깃발은 구름이 없는 칸이면서, 상하좌우와 대각선으로 인접한 여덟 칸 중 구름이 하나 이상 있는 칸에만 설치할 수 있다. 이렇게 설치한 깃발에는 인접한 여덟 칸 중 구름이 있는 칸의 개수에 해당하는 값이 적힌다. 플레이어는 깃발을 세울 수 있는 모든 칸에 깃발을 세워두었다. 문득, 플레이어는 깃발 중 값이 K인 깃발이 몇 개나 있는지가 궁금해졌다. 여러분이 플레이어를 대신해 값이 K인 ..

[구름톤 챌린지] Day 6 문자열 나누기
Algorithm/구름톤 챌린지 2023. 8. 27. 16:54

문제 길이가 N인 문자열 S가 주어진다. 플레이어는 문자열 S를 서로 겹치지 않는 3개의 부분문자열로 나누려고 한다. 부분문자열은 모두 길이가1이상이어야 하며, 원래 문자열에서 연속해야 한다. 문자열을 나누는 방법에 따라 플레이어는 점수를 얻을 수 있다. 점수는 다음 과정에 따라 계산된다. 문자열 를 위 조건에 따라 나눴을 때, 등장하는 모든 부분문자열을 중복 제거하고 사전순으로 정렬한 결과를 라고 한다. 나누어진 개의 문자열이 각각 에서 번째로 등장하는 문자열이라면, 얻을 수 있는 점수는 이다. 예를 들어, abcd 라는 문자열을 3 개의 부분문자열로 나누는 방법은 {a, b, cd}, {a, bc, d}, {ab, c, d} 의 세 가지가 있다. 여기서 부분문자열을 중복 제거하고 사전 순서로 정렬한 ..

[PART 02] 5. 스트림 활용 (2)
도서/Modern Java in Action 2023. 8. 21. 01:20

이 글은 모던 자바 인 액션 책을 읽고 정리한 내용입니다. http://www.yes24.com/Product/Goods/77125987 모던 자바 인 액션 - 예스24 자바 1.0이 나온 이후 18년을 통틀어 가장 큰 변화가 자바 8 이후 이어지고 있다. 자바 8 이후 모던 자바를 이용하면 기존의 자바 코드 모두 그대로 쓸 수 있으며, 새로운 기능과 문법, 디자인 패턴 www.yes24.com 리듀싱 요소의 합 리스트의 숫자 요소를 더하는 코드를 생각해보자. 리스트에서 하나의 숫자가 남을 때 까지 reduce 과정을 반복한다. 이런 상황에서 reduce를 이용하면 다음처럼 스트림의 모든 요소를 더할 수 있다. int sum = numbers.stream().reduce(0, (a, b) -> a + b..

[Spring] 빈 생명주기 콜백
SpringBoot/Spring Basic 2023. 8. 14. 20:38

빈 생명주기 콜백 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 이번 시간에는 스프링을 통해 이러한 초기화 작업과 종료 작업을 어떻게 진행하는지 알아보자. 스프링 빈은 간단하게 다음과 같은 라이프사이클을 가진다. 객체 생성 → 의존관계 주입 스프링 빈은 객체를 생성하고, 의존 관계 주입이 끝난 다음에야 데이터를 사용할 준비가 완료된다. 따라서 초기화 작업은 의존관계 주입이 모두 완료되고 난 다음에 호출해야 한다. 하지만, 개발자가 의존관계 주입이 완료된 시점을 어떻게 알 수 있을까? 스프링은 스프링빈에게 콜백 메서드를 통해 초기화 시점을 알려주는 ..

article thumbnail
[PART 02] 5. 스트림 활용 (1)

이 글은 모던 자바 인 액션 책을 읽고 정리한 내용입니다. http://www.yes24.com/Product/Goods/77125987 모던 자바 인 액션 - 예스24 자바 1.0이 나온 이후 18년을 통틀어 가장 큰 변화가 자바 8 이후 이어지고 있다. 자바 8 이후 모던 자바를 이용하면 기존의 자바 코드 모두 그대로 쓸 수 있으며, 새로운 기능과 문법, 디자인 패턴 www.yes24.com 필터링 프레디케이트로 필터링 스트림 인터페이스는 filter 메서드를 지원한다. filter메서드는 프레디케이트를 인수로 받아서 프레디케이트와 일치하는 모든 요소를 포함하는 스트림을 반환한다. List vegetarianMenu = menu.stream() .filter(Dish::isVegetarian) .co..

[Spring] 의존 관계 자동 주입
SpringBoot/Spring Basic 2023. 8. 3. 20:22

주입 방법 1. 생성자 주입 생성자 주입은 생성자 호출 시점에 딱 1번만 호출되는 것이 보장된다. 주로 불변, 필수 의존 관계에서 사용한다. 만약, 생성자가 1개인 스프링 빈이면? @Autowired를 생략해도 자동으로 주입된다. @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this...

article thumbnail
[Spring Security] 스프링 시큐리티 동작 과정에 대해 알아보자.
SpringBoot/Spring Security 2023. 7. 31. 01:32

GDSC 활동을 하면서 여러 백엔드 분들이 시큐리티에 대해 많이 어려워하시는 것 같아 정리한 내용들을 공유해보려고 합니다. 스프링 시큐리티란 ? 스프링 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크이다. 스프링 시큐리티에 대해 정리하기 전에 헷갈릴 수 있는 단어들을 먼저 알고 가자. 보안 용어 정리 인증(Authenticate) : 유저가 누구인지 확인하는 절차 인가(Authorization) : 인증된 사용자에 대해 권한을 확인하고 허락하는 것 접근 주체(Principal) : 보호된 대상에 접근하는 유저 비밀번호(Credential) : 대상에 접근하는 유저의 비밀번호 스프링 시큐리티 특징과 구조 보안과 관련하여 체계적으로 많은 옵션을 제공하여 편리하게 사용할 ..

article thumbnail
[Spring] 컴포넌트 스캔
SpringBoot/Spring Basic 2023. 7. 21. 15:51

지금까지 만든 Appconfig를 보면 @Bean 어노테이션을 붙여서 직접 설정정보에 스프링 빈을 나열하는 형식이었다. 그런데, 내가 만들어야할 스프링 빈이 수백개가 된다면 ? → @ComponentScan을 사용 ! 동작 과정 1. @ComponentScan @Component 어노테이션이 붙은 모든 클래스를 자동으로 스프링 빈에 등록해준다. 이때, 스프링 빈의 기본 이름 : 클래스명 사용, 앞글자만 소문자를 사용한다. MemberServiceImpl 클래스 → Bean 이름 : memberServiceImpl 만약, 클래스에 @Component(“service”)처럼 속성을 설정하면? → service 라는 이름으로 등록된다. 2. @Autowired 의존 관계 자동 주입 생성자에 @Autowired..

article thumbnail
[PART 02] 4. 스트림 소개
도서/Modern Java in Action 2023. 7. 16. 04:05

이 글은 모던 자바 인 액션 책을 읽고 정리한 내용입니다. http://www.yes24.com/Product/Goods/77125987 모던 자바 인 액션 - 예스24 자바 1.0이 나온 이후 18년을 통틀어 가장 큰 변화가 자바 8 이후 이어지고 있다. 자바 8 이후 모던 자바를 이용하면 기존의 자바 코드 모두 그대로 쓸 수 있으며, 새로운 기능과 문법, 디자인 패턴 www.yes24.com 스트림이란? 자바 8 API에 새로 추가된 기능 선언형으로 컬렉션 데이터를 처리할 수 있음 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리 가능 이번 예제는 저칼로리의 요리명을 반환하고, 칼로리를 기준으로 요리를 정렬하는 자바 7 코드다. 이 코드를 자바 8의 스트림으로 다시 구현해보자. List..