분류 전체보기 344

[싱글톤 컨테이너] 싱글톤 방식의 주의점 - 무상태(stateless) 설계

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard · 싱글톤 객체는 상태를 유지(stateful)하도록 설계해서는 안됨 : 여러 클라이언트가 같은 객체를 공유하기 때문 ➡️ 무상태(stateless)로 설계 !! 》 특정 클라이언트에 의존적인 필드 X 》 특정 클라이언트가 값을 변경할 수 있는 필드 X (가급적 읽기만) 》 필드 대신 자바에서 공유되지 않는 지역변수, 파라미터, ThreadLocal 등 사용 ☑️ 문제 상황 · 공유 필드의 값을 특정 클라이언트가 변경할 수 있을 때 // StatefulSe..

[싱글톤 컨테이너] 싱글톤 패턴의 문제를 해결하는 스프링 컨테이너

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard 💡 스프링 없는 순수 DI 컨테이너 (싱글톤 X) TEST ☑️ 매 호출 시, 다른 객체가 생성됨을 확인하기 public class SingletonTest { @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer() { AppConfig appConfig = new AppConfig(); // 1. 조회 : 호출할 때마다 객체 생성 MemberService memberService1 = appConfi..

🩵 Spring Security (2) 로그인 🩵

📺스프링 시큐리티 강의📺 https://www.youtube.com/playlist?list=PLJkjrxxiBSFCKD9TRKDYn7IE96K2u3C3U ⭐ UserDetailService & UserDetails 기능 사용하기 🫧 Web 으로 확인하기 · CustomUserDetailService @Service @RequiredArgsConstructor public class CustomUserDetailService implements UserDetailsService { private final MemberRepository memberRepository; @Override public UserDetails loadUserByUsername(String email) throws Username..

🩵 Spring Security (1) 회원가입 🩵

📺스프링 시큐리티 강의📺 https://www.youtube.com/playlist?list=PLJkjrxxiBSFCKD9TRKDYn7IE96K2u3C3U 1️⃣ build.gradle 에 의존성 추가 ... dependencies { ... // spring security implementation 'org.springframework.boot:spring-boot-starter-security' testImplementation 'org.springframework.security:spring-security-test' } ... 2️⃣ SecurityConfig 파일 작성 · 회원 가입 요청을 받아들이기 위한 경로 허용 : requestMatchers("/user/signin").permitAll..

💜 MySQL DB 연결하기 (+ Docker, DataGrip) 💜

1. MySQL image 가진 Docker Container 실행 2. 프로젝트 application.yml 설정 + 의존성 추가 후 실행 3. DataGrip 연결로 테이블 확인하기 ✨ Docker - MySQL 설정하는 방법 · Docker Desktop 다운받기 : https://www.docker.com/ · cmd 창에서 도커 다운로드 확인 + 이미지 pull + 컨테이너 실행 후 접속하여 DB 설정 # 도커 버전 확인으로 설치 여부 확인하기 docker -v # MySQL image 다운로드 # docker pull [이미지 이름:버전] docker pull mysql:8.0.33 # 다운로드한 이미지 확인하기 docker images # 다운로드한 이미지로 컨테이너 실행하기 # docker..

[Spring] Exception processing template

Exception processing template "user/signin": Error resolving template [user/signin], template might not exist or might not be accessible by any of the configured Template Resolvers Postman 프로그램으로 회원 가입 POST 요청을 보냈는데 해당 경로의 템플릿이 없어 에러가 났어용.. ㅜ.ㅜ 그치만 난 템플릿 안만들건데? DB 에 저장이나 하라고 ㅡ,ㅡ 해당 API 요청에 반환하는 데이터를 변경해주기 위해 Controller 를 수정했습니다 기존 코드 @Controller @RequiredArgsConstructor public class MemberContro..

ERROR 2023.11.26

[스프링 컨테이너와 스프링 빈] BeanDefinition - 스프링 빈 설정 메타 정보

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard ✨ BeanDefinition ✅ BeanDefinition : Bean 정보에 대한 추상화 (Bean 설정 메타 정보) 》@Bean, 당 각각 하나의 메타 정보 생성 BeanDefinition 정보 설명 BeanClassName 생성할 빈의 클래스명 (자바 설정처럼 팩토리 역할의 빈 사용 시에는 없음) FactoryBeanName 팩토리 역할의 빈을 사용할 경우 이름 (ex. appConfig) FactoryMethodName 빈을 생성할 팩토리 메서드 ..

🤎 Entity 개발하기 🤎

2023.11.22 - [Spring/[PROJECT] 도서 대여 프로그램] - 🩶 ERD 설계하기 🩶 🩶 ERD 설계하기 🩶 2023.11.22 - [Spring/[PROJECT] 도서 대여 프로그램] - 🤍 비즈니스 요구사항 설계하기 🤍 🤍 비즈니스 요구사항 설계하기 🤍 😳 회원 회원 가입 & 회원 탈퇴 로그인 & 로그아웃 이름, 닉네임, 전화번 alsrudalsrudalsrud.tistory.com ⬆️⬆️⬆️ 기반 ⬆️⬆️⬆️ 🗂️ Common - BaseEntity · 모든 테이블에 공통적으로 들어가는 컬럼 엔티티 · 추상 클래스 선언 후 다른 클래스에서 상속 받기 · createdAt (생성시간), updatedAt (수정시간) ☑️ BaseEntity @MappedSuperclass @Ent..

[스프링 컨테이너와 스프링 빈] 다양한 설정 형식 지원 - 자바 코드, XML

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard ✅ 스프링 컨테이너는 다양한 형식의 설정 정보를 받아들일 수 있다 》자바 코드 》XML 》Groovy 》... ✨ 애노테이션 기반 자바 코드 설정 사용 · AnnotationConfigApplicationContext 클래스를 사용해 자바 코드로 된 설정 정보 전달 》new AnnotationConfigApplicationContext(AppConfig.class) ✨ XML 설정 사용 · GenericXmlApplicationContext 클래스를 사용해..

[스프링 컨테이너와 스프링 빈] BeanFactory 와 ApplicationContext

🧐강의🧐 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard ✨ BeanFactory · 스프링 컨테이너의 최상위 인터페이스 · 스프링 빈을 관리, 조회하는 역할 · getBean() ✨ ApplicationContext · BeanFactory 의 기능을 상속받아 제공 (BeanFactory 기능 + ɑ ) ✅ ApplicationContext 가 제공하는 부가 기능 · MessageSource : 메세지 소스를 활용한 국제화 기능 (ex. 한국 → 한국어, 영어권 → 영어) · EnvironmentCapable ..

728x90