
->Spring과 관련된 기술들을 starters를 통해 한번에 해결할 수 있다는 이야기.
->하나하나 직접 sample code를 찾을 필요가 없다.(dependencies에 관한)


->만약 자기만의 starter를 만들 때는, spring-boot로 시작하지 말고(이거는 spring boot 공식 starter 이므로), third-party starter project 이름을 먼저 기입한 후 spring-boot를 붙이라는 이야기임.

->여기서 greeting이 callback 함수이다.




->즉, 동기 처리는 '순차적 진행'을, 비동기 처리는 '여러 작업 동시 진행'을 의미한다.
->사실, '여러 작업을 동시 진행' -> '순차적으로 진행 x'로 이해하는 게 더 나을 거 같음.(비동기 처리의 2번째 줄로 이해하는 게 더 낫다.)
(다시 강의로 돌아와서...)

->spring boot는 어떤 특정한 코드 구조를 강요하지 않는다!
->다만, 몇가지 도움이 될만한 것들이 있다!(밑에 참고)

->default package를 권장하지 x 라는 이야기임.
*default package:

->한 마디로 말 그대로, package를 명시하지 않은 것.





->내 vscode에서는 myapp 대신 demo로 되어 있음.

->위 사진에서 myapplication/Application.java가 main application class이다.



->한 마디로, 요약 부분을 참고하면, Spring에서 java로 application 설정 관리를 할 수 있는 클래스이다.
->@Configuration과 @Bean 어노테이션을 사용한다.


->Bean은 설정 객체일뿐만 아니라 어플리케이션 로직 객체이다.
->즉, 그냥 Spring 컨테이너에서 관리되는 어플리케이션 로직 객체로 이해하면 편하다.

->위에 있는 gpt 설명처럼, Configuration class -> XML or Java 기반으로 쓸 수 있는데, 이왕이면 같은 계열인 Java를 써라라는 의미이다.




제곧내
->나는 configuration class가 뭔지에 대한 설명만 기입한 것임.
※Spring의 어려운 점 중 하나가 이런 설정 파일이 어떻게 얽혀있는지 구조를 잘 모르면 모를 수 밖에 없다.

->Q. 이 UserService가 어떻게 Bean에 등록되어 있을 수 있는가?
->A. 결론적으로는, '@ComponentScan' 덕분이다.

->Example.java의 @ComponentScan이 자신이 속해 있는 me.whiteship 폴더(패키지) 하단 부분을 전부 scan해주는 역할을 한다.

->그 중에, Configuration 패키지에 UserService에 대한 @Configuration과 @Bean이 있는 것이다.
->그래서, @Configuration이 Bean으로 등록되고, @Bean 부분도 또 Bean으로 등록이 된다.
->그래서, Userservice가 Bean으로 등록이 되는 것이다.