본문 바로가기

Bean4

[Spring] 스프링 빈 직접 등록하여 사용하기 ( + 장점 ) 이 글을 쓰는 이유 스프링으로 Restcontroller를 사용하게 되면 Dependency에 따라 자동으로 의존성을 부여한다. 그 뜻은 간단히 풀이하면 스프링 서버를 실행하면 하나의 큰 컨테이너가 실행되고, 그 컨테이너에 gradle파일의 명세대로 컨테이너에 스프링 빈을 등록한다. 스프링은 이처럼 자동으로 스프링 빈을 등록하여 사용할 수 있다. 현재 코드 상황 기본적으로 나는 도메인 기반 폴더구조를 지향한다. 추가적으로 spring코드의 가독성을 높히고 재사용성을 재고하기 위해 크게 3가지로 코드를 분리한다. 1. controller > api 진입지점 2. 예외처리 > Service 폴더에 정리 3. SQL(DB) > Repository 폴더에 정리. 예시로 JdbcTemplate을 userRepos.. 2024. 1. 9.
스프링 빈 설정 메타 정보 _ BeanDefinition 스프링은 어떻게 이런 다양한 설정 형식을 지원하는 것일까? 그 중심에는 `BeanDefinition` 이라는 추상화가 있다. 방법1. 자바 코드를 읽어서 BeanDefinition을 만들면 된다. 방법2. XML을 읽어서 BeanDefinition을 만들면 된다. 즉, 스프링 컨테이너는 자바 코드인지, XML인지 몰라도 된다. 오직 BeanDefinition만 알면 된다. `BeanDefinition` 을 빈 설정 메타정보라 한다. `@Bean` , `` 당 각각 하나씩 메타 정보가 생성된다. 스프링 컨테이너는 이 메타정보를 기반으로 스프링 빈을 생성한다. 1. 자바 코드의 경우 : AnnotationConfigApplicationContext` 는 `AnnotatedBeanDefinitionReader.. 2023. 8. 11.
스프링의 다양한 설정 형식 지원 - 자바 코드 , XM 스프링 컨테이너는 다양한 형식의 설정 정보를 받아드릴 수 있게 유연하게 설계되어 있다. ex ) 자바 코드, XML, Groovy 등등 애노테이션 기반 자바 코드 설정 사용 - 일반적인 스프링 설정 방식이다. - new AnnotationConfigApplicationContext(AppConfig.class)` - `AnnotationConfigApplicationContext` 클래스를 사용하면서 자바 코드로된 설정 정보를 넘기면 된다. 지금까지 해온 것이니 실습 생략한다. XML 설정 사용 - 요즘의 스프링 부트에서는 사용하지 않지만, 과거의 레거시 프로젝트에서 주로 사용됨. - `GenericXmlApplicationContext` 를 사용하면서 `xml` 설정 파일을 넘기면 된다. 1. reso.. 2023. 8. 10.
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.
반응형