//제곱근 구하기
final int PRECISION = 20;
// 어떤 양수가 와도 무방
double x = PRECISION;
// 원하는 정밀도 만큼 반복
for (int i = 0; i < PRECISION; i++)
x = 0.5 * (num / x + x);
//소숫점 두자리 까지 리턴
return String.format("%.2f", x);
}
- DependencyConfig 등 @Configuration 설정이 된 파일이 있을 시 아래 코드 추가
@ComponentScan(excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class))
외부 라이브러리 사용 : Bean
내부 : Component6
- 생성자 호출 시점에 딱 1번만 호출되는 것이 보장
- 불변과 필수 의존관계에 사용
- 생성자가 1개만 존재하는 경우엔 생략 가능
NullPointerException
방지- 주입받을 필드를 final로 선언 가능
- 선택과 변경 가능성이 있는 의존관계에 사용
- 자바빈 프로퍼티 규약의 수정자 메서드 방식을 사용
- 수정자의 경우 @Autowired를 꼭 입력해야 실행
- 외부에서 변경 불가로 테스트하기 힘들다.
- 실제 코드와 상관없는 특정 테스트를 하고 싶을 때 사용
- 한번에 여러 필드를 주입 / 일반적으로 사용 x
주입할 스프링 빈이 없을 때 동작해야하는 경우
- 자동 주입 대상 옵션 처리 방법
- @Autowired(required=false) : 자동 주입할 대상이 없으면 수정자 메서드 자체가 호출x
- org.springframework.lang.@Nullable : 자동 주입할 대상이 없으면 null이 입력됨.
- Optional<>: 자동 주입할 대산이 없으면 Optional.empty가 입력됨.
오류
AutowiredTest를 실행시키는데 javax.annotation.meta.When not found 오류 발생
- 해결
gradle 파일에 아래 코드 추가dependencies { ... // https://mvnrepository.com/artifact/com.google.code.findbugs/jsr305 implementation 'com.google.code.findbugs:jsr305:3.0.2' ... }