본문 바로가기

Develop/Spring (실습)8

@Configuration 과 @Bean @Configuration - 클래스에 붙히는 어노테이션 - @Bean 을 사용할 때, 함께 사용해줘야 한다. @Bean - 메소드에 붙히는 어노테이션 - 메소드에서 반환되는 객체를 스프링 빈에 등록한다. 보통 언제 쓰임? 외부 라이브러리나, 프레임워크에서 만든 클래스를 등록할 때! ex) JdbcTemplate 실제로 JdbcTemplateConfiguration.class를 확인해보면 @Configuration과 @Bean을 확인할 수 있다. 그럼 @Service와 @Repository는 언제 쓰는데? → 개발자가 직접 만든 클래스를 스프링 빈으로 등록할 때 사용한다. 참고 글 : https://iron-mentalman.tistory.com/entry/Spring-%EC%9D%BC%EB%B0%98-.. 2024. 1. 10.
[Spring] @Primary 어노테이션 전제조건 1. Controller/ Service/ Repository로 구성되는 계층형 구조를 사용한다고 가정한다. 각 파일의 역할은 다음과 같다. controller → api 진입시점 service → 예외처리 담당 Repository → SQL(DB통신) 담당 2. 각 레포지토리에는 통일된 인터페이스가 주입된다. (implements) 탄생배경 스프링의 IoC(Inversion of Control) 제어의 역전 속성을 이해해야 한다. 제어의 역전이란, 직접 특정인스턴스를 주입하지 않아도 스프링 컨테이너가 대신 생성자를 통해 적절한 레포지토리를 탐색하여 주입해준다는 것을 의미한다. 그렇다면? 만약 2가지 이상의 레포지토리가 같은 인터페이스를 상속받은 상태에서, Service 클래스가 해당 인터페이스.. 2024. 1. 10.
null 옵션처리 ( 주입할 빈이 없이도 동작해야 할 때 ) 사건의 발단 : 주입할 스프링 빈이 없어도 동작해야 할 때가 있다. 그런데 `@Autowired` 만 사용하면 `required` 옵션의 기본값이 `true` 로 되어 있어서 자동 주입 대상이 없으면 오류 가 발생한다. 자동 주입 대상을 옵션으로 처리하는 방법은 다음과 같다. `@Autowired(required=false)` : 자동 주입할 대상이 없으면 수정자 메서드 자체가 호출 안됨 `org.springframework.lang.@Nullable` : 자동 주입할 대상이 없으면 null이 입력된다. `Optional` : 자동 주입할 대상이 없으면 `Optional.empty` 가 입력된다. //호출 안됨 @Autowired(required = false) public void setNoBean1(.. 2023. 8. 26.
필터 ( includeFilters & excludeFilters ) includeFilters : 컴포넌트 스캔 대상을 추가로 지정한다. excludeFilters : 컴포넌트 스캔에서 제외할 대상을 지정한다. 1. 어노테이션으로 MyIncludeComponent / MyExcludeComponent 생성. 2. 어노테이션 설정할 때, 기본 설정 어노테이션 3개 추가로 설정해준다. @Target : 필드, 메소드, 클래스, 파라미터 등 선언할 수 있는 타입을 설정 @Retention : 어느 시점까지 어노테이션의 메모리를 가져갈지 설정 @Documented : javadoc의 부가기능 / 해당 애노테이션 정보를 해당 코드의 문서에 같이 보여준다. (차후 @Documented는 따로 다뤄볼 예정) package hello.core.scan.filter; import jav.. 2023. 8. 20.
Spring Basic (스피링 bean조회 기본) 스프링 컨테이너에서 스프링 빈을 찾는 가장 기본적인 조회 방법 `ac.getBean(빈이름, 타입)` `ac.getBean(타입)` 조회 대상 스프링 빈이 없으면 예외 발생 `NoSuchBeanDefinitionException: No bean named 'xxxxx' available 1. 빈 이름이 제대로 출력되는지 확인 package hello.core.beanfind; import hello.core.AppConfig; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Disp.. 2023. 8. 8.
Spring Basic ( 컨테이너 구동원리 / 스프링 Bean 파보기 ) //스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); - ApplicationContext` 를 스프링 컨테이너라 한다. - `ApplicationContext` 는 인터페이스이다. - 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. //스프링 컨테이너 생성과정 //스프링 빈 등록 //컨테이너에 등록된 모든 빈 조회 //스프링 컨테이너에 실제 스프링 빈들이 잘 등록 되었는지 확인해보자. package hello.core.beanfind; import hello.core.AppConfig; import or.. 2023. 8. 7.
반응형