본문 바로가기

분류 전체보기110

null 옵션처리 ( 주입할 빈이 없이도 동작해야 할 때 ) 사건의 발단 : 주입할 스프링 빈이 없어도 동작해야 할 때가 있다. 그런데 `@Autowired` 만 사용하면 `required` 옵션의 기본값이 `true` 로 되어 있어서 자동 주입 대상이 없으면 오류 가 발생한다. 자동 주입 대상을 옵션으로 처리하는 방법은 다음과 같다. `@Autowired(required=false)` : 자동 주입할 대상이 없으면 수정자 메서드 자체가 호출 안됨 `org.springframework.lang.@Nullable` : 자동 주입할 대상이 없으면 null이 입력된다. `Optional` : 자동 주입할 대상이 없으면 `Optional.empty` 가 입력된다. //호출 안됨 @Autowired(required = false) public void setNoBean1(.. 2023. 8. 26.
정처기 실기 _ 1 대표적인 개발모형 스크럼 : 팀을 중심으로 하여 개발의 효율성을 높히는 기법 xp : 고객의 참여와 개발 과정의 반복을 극대화 칸반 Lean 기능 중심 개발 (FDD : Feature Driven Development) xp의 주요 실천방법 Pair Programming : 짝 프로그래밍 Collective Ownership : 공동 코드 소유 Test-Driven Development : 테스트 주도 개발 Whole Team : 전체 팀 Continuous Integration : 계속적인 통합 Refactoring : 리팩토링 - 빠르개 개발하는데 목적 Small Releases : 소규모 릴리즈 - 고객의 요구에 신속 대응 WAS( 웹 애플리케이션 서버 ) 사용자의 요구에 따라 변하는 동적인 컨텐츠.. 2023. 8. 21.
@componentScan 중복 등록과 충돌 @componentScan 을 실행할 때, bean이름 중복 등록과 충돌이 일어나면 스프링은 어떻게 대응할까? 1. 자동 빈 등록 vs 자동 빈 등록 상황 중복되는 두개의 빈이 모두 자동등록 되는 경우 ( @Component 어노테이션을 통해서... ) → 오류 발생 : ConflictingBeanDefinitionException` 예외 발생 두개의 service명이 겹칠 때, bean을 조회하는 scan 테스트 코드를 실행 시 오류가 뜸. package hello.core.scan; import hello.core.AutoAppConfig; import hello.core.member.MemberService; import org.assertj.core.api.Assertions; import org.. 2023. 8. 20.
필터 ( includeFilters & excludeFilters ) includeFilters : 컴포넌트 스캔 대상을 추가로 지정한다. excludeFilters : 컴포넌트 스캔에서 제외할 대상을 지정한다. 1. 어노테이션으로 MyIncludeComponent / MyExcludeComponent 생성. 2. 어노테이션 설정할 때, 기본 설정 어노테이션 3개 추가로 설정해준다. @Target : 필드, 메소드, 클래스, 파라미터 등 선언할 수 있는 타입을 설정 @Retention : 어느 시점까지 어노테이션의 메모리를 가져갈지 설정 @Documented : javadoc의 부가기능 / 해당 애노테이션 정보를 해당 코드의 문서에 같이 보여준다. (차후 @Documented는 따로 다뤄볼 예정) package hello.core.scan.filter; import jav.. 2023. 8. 20.
@ComponentScan & 의존성 주입(@Autowired) 딥다이브 지금까지 스프링 빈을 등록할 때는 자바코드의 @Bean이나 XML의 을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열했다. 이렇게 등록해야할 스프링 빈이 수십, 수백개가 되면 일일이 등록하기 어려워진다. → 스프링은 설정정보가 없어도 자동으로 스프링 빈을 등록하는 @ComponentScan이라는 기능을 제공한다. +@ 의존관계도 자동으로 주입하는 @Autowired라는 기능도 제공한다. @ComponentScan이란? 컴포넌트 스캔은 이름 그대로 `@Component` 애노테이션이 붙은 클래스를 스캔해서 스프링 빈으로 등록한다. 이제 각 클래스가 컴포넌트 스캔의 대상이 되도록 `@Component` 애노테이션을 붙여주자. ※예제를 시행할 때, 주의할 점 'excludeFilters'를 통해 컴포넌트 .. 2023. 8. 18.
@Configuration과 싱글톤 Spring 코드를 보다보면 이상한 점이 있다. 내가 작성한 AppConfig.java 코드를 보자. package hello.core; import hello.core.discount.DiscountPolicy; import hello.core.discount.RateDiscountPolicy; import hello.core.member.MemberRepository; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; import hello.core.member.MemoryMemberRepository; import hello.core.order.OrderService; import hello.core.. 2023. 8. 17.
반응형