Spring 149

[컴포넌트 스캔] 필터 - includeFilters, excludeFilters

🧐강의🧐 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 includeFilters : 컴포넌트 스캔 대상을 추가로 지정 excludeFilters : 컴포넌트 스캔 대상에서 제외할 대상 지정 TEST ☑️ 필터를 사용해 등록한 빈 확인하기 1. test/java/hello.core/scan/filter Package 생성 2. filter 패키지에 MyIncludeComponent Interface 생성 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME..

[컴포넌트 스캔] 기본 스캔 대상

🧐강의🧐 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 ✨ 탐색할 패키지의 시작 위치 지정하기 · AutoAppConfig ... @Configuration @ComponentScan( // 탐색할 패키지 시작 위치 지정하기 basePackages = "hello.core.member", // 지정한 클래스의 패키지를 탐색 시작 위치로 지정하기 basePackageClasses = AutoAppConfig.class, ... ) public class AutoAppConfig { } ✅ basePackages ..

[컴포넌트 스캔] @Component, @Autowired - 의존 관계 자동 주입

🧐강의🧐 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 🫧 @ComponentScan ☑️ @Component 가 붙은 모든 클래스를 스프링 빈으로 등록 (설정 정보 없이 스프링 빈 자동 등록) · 스프링 빈 이름 기본 규칙 : 클래스명 (맨 앞글자만 소문자로 변경) 》ex) MemberServiceImpl → memberServiceImpl 》빈 이름 직접 지정 : @Component("memberService2") 🫧 @Autowired ☑️ 생성자에 @Autowired 지정 시, 스프링 컨테이너가 해당 스..

[싱글톤 컨테이너] @Configuration - 싱글톤 보장

🧐강의🧐 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 🫧 궁금증 · AppConfig 에서 MemoryMemberRepository 가 2 번 호출되면서 싱글톤이 깨지지는 않을까 ?? @Configuration public class AppConfig { // @Bean memberService -> new MemoryMemberRepository() // @Bean orderService -> new MemoryMemberRepository() @Bean public MemberService memberSe..

[싱글톤 컨테이너] 싱글톤 방식의 주의점 - 무상태(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..

[스프링 컨테이너와 스프링 빈] 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 빈을 생성할 팩토리 메서드 ..

728x90