코드스테이츠 Day37
- 오전 데일리 코딩
public class Solution {
public int fibonacci(int num) {
ArrayList<Integer> fiboList = new ArrayList<>();
fiboList.add(0);
fiboList.add(1);
return aux(fiboList, num);
}
public int aux(ArrayList<Integer> fiboList, int num){
if(fiboList.size()<=num) {
fiboList.add(aux(fiboList, num-1) + aux(fiboList, num-2));
}
return fiboList.get(num);
}
}
결국 레퍼런스 봤다.
함수 하나로 끝내려고 했는데, 2개로 나눠야하는 군,,
재귀함수 진짜 어떡함,, 재귀함수만 나오면 막혀버리는 나,, ⭐️ (레퍼런스 읽으면 이해는 됨)
하지만 실제 업무할 때 재귀함수 쓰면 (스택 쌓이고 메모리 누수돼서) 뺨 맞을 수 있다는 설명을 세션 때 들었으므로.. 상심하지 말자.
- DI (Dependency Injection)
- annotation(@)은 단순한 주석이니까 기능이 없다.
- @SpringBootApplication에 @ComponentScan이 들어있으니, 프로젝트 시작 루트 위치에 두는 것 권장. (@ComponentScan이 동일 및 하위 패키지 검사)
- @Controller 등 여러 애너테이션에 @Component 포함되어 있음. --> Bean으로 등록됨
- @Bean은 메서드 레벨의 주석이며, 메서드에 @Bean 달 때는 @Configuration된 클래스 내에서만! (@Configuration이 Bean 찾는 애너테이션임)
밑에는 찾는 것과 찾아지는 것의 관계.
- @Configuration - @Bean
- @ComponentScan - @Component
- @Bean은 메서드 레벨에서 객체 생성하는데 코드 수정 못하고 외부 라이브러리를 사용할 때 수동으로 Bean 등록하기 위해 쓰며, 대부분은 @Component 씀.
- (Spring) Bean : 스프링 컨테이너에 등록되어 관리되는 객체!
- Java Bean : 단순히 클래스에서 게터/세터만 가지고 있는 클래스의 객체.
- @Autowired : 의존성 주입하라고 안내하는 애너테이션. 생성자가 하나일 때는 생략 가능.
- Bean definition : Bean의 특성 정보를 담은 메타 데이터로, 추상화되어 있다. 클래스, xml, 파일 등의 형식으로 가능.
- POJO(서비스 로직) + 메타 정보 ---스프링 컨테이너---> Bean 생성
- @ 주석 정리되어 있는 블로그들!
1. https://velog.io/@gillog/Spring-Annotation-%EC%A0%95%EB%A6%AC
2. https://jeong-pro.tistory.com/151
<느낀 점>
어제부터 공부한 DI.
너무 어려웠는데, 오늘 애너테이션 의미 정리한 블로그 읽어보고, 인프런 무료 강의도 듣고나니 조금은 더 이해가 되었다.
그리고 오늘 오후 세션 엄청 열심히 들었음.
이렇게 집중해서 들은 건 처음인 것 같다.
이번 주도 수고했다~