묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
for-each를 사용해서 배열의 값을 입력하는 방법은 없나요?
for-each를 사용해서 배열의 값을 입력하는 방법은 없나요?
-
해결됨스프링 핵심 원리 - 기본편
혹시 강의 자료 오타인지 궁금합니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]빈 스코프.pdf 3 페이지에이렇게 나와 있습니다. 세 번째에 memberService 요청이라고 써져 있는데 오타인가 싶어서 말씀드립니다.
-
해결됨스프링 핵심 원리 - 기본편
프로토타입 스코프 빈의 스프링 빈 저장소에서의 상태
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]아래 사진은 예전에 스프링 컨테이너와 스프링 빈 파트의 학습 자료에 있는 사진입니다.위 사진은 싱글톤 기준으로 설명된 그림 같은데 프로토타입 스코프 빈의 경우를 위 그림에 대입하면스프링 컨테이너가 생성된 이후, 스프링 빈 저장소에 빈 이름만 있고, 빈 객체는 비어 있다고 생각하면 될까요? 요청이 와야 비로소 객체를 생성 후 클라이언트에게 반환하고, 요청이 온 이후에도 스프링 빈 저장소엔 여전히 빈 이름만 있고 빈 객체는 비어 있다고 보면 되나요? 제대로 이해한 건지 확인차 질문드립니다.
-
미해결스프링 핵심 원리 - 기본편
회원 도메인 실행과 테스트 강의 8분 40초 질문입니다.
스프링 핵심 원리 이해1 - 예제 만들기 질문입니다.회원 도메인 실행과 테스트 강의 8분 40초에 memorymemberrepository가 추상화에도 의존하고 구체화에도 의존한다는게 무슨뜻인가요? 2.주문과 할인 도메인 개발 7분public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository=new MemoryMemberRepository(); private final DiscountPolicy discountPolicy=new FixDiscountPolicy();자바를 배울 때private final MemberRepository memberRepository=new memberRepository();이런식으로 객체도 같은 이름으로 생성해서 항상 그런줄알았는데 왜 memberRepository() 이게 아니라 MemoryMemberRepository() 이런식으로 되는건가요?implements와 extends차이점이 뭔가요? https://velog.io/@hkoo9329/%EC%9E%90%EB%B0%94-extends-implements-%EC%B0%A8%EC%9D%B4 여기서는class가 class를 상속받을 땐 extends를 사용하고, interface가 interface를 상속 받을 땐 extends를 사용한다. 이렇게나와있는데 이게 맞는거아요? 주문과 할인 도메인 실행과 테스트 1분public class OrderApp { public static void main(String[] args) { MemberService memberService = new MemberServiceImpl(); OrderService orderService = new OrderServiceImpl(); long memberId = 1L; Member member = new Member(memberId, "memberA", Grade.VIP); memberService.join(member); Order order = orderService.createOrder(memberId, "itemA", 10000); System.out.println("order = " + order); } }Long memberId=1L 여기서 1리터가 무슨 뜻인가요?public class Member { private Long id; private String name; private Grade grade;Member클래스에 grade로 변수 선언했는데요. grade가 소문자가 아닌 Grade.VIP 대문자로 되어있는데 왜이러는건가요?
-
해결됨스프링 핵심 원리 - 기본편
외부 라이브러리에 초기화, 종료 메서드를 적용하는 경우에 대한 의문점
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]"코드가 아니라 설정 정보를 사용하기 때문에 코드를 고칠 수 없는 외부 라이브러리에도 초기화, 종료 메서드를 적용할 수 있다."라고 나와 있는데 이게 어떻게 가능한지에 대해 궁금합니다. 아래는 강의에 나온 예인데@Bean(initMethod = "init", destroyMethod = "close") public NetworkClient networkClient() { NetworkClient networkClient = new NetworkClient(); networkClient.setUrl("http://hello-spring.dev"); return networkClient; }이 경우엔 초기화 메서드 init()과 종료 메서드 close() 모두 NetworkClient의 메서드이잖아요? 그런데 외부 라이브러리에 초기화, 종료 메서드를 적용할 땐 초기화 메서드와 종료 메서드를 어떤 클래스에서 선언하고, @Bean(initMethod = ?, destroyMethod = ?) 여기에선 어떤 식으로 적으면 되나요?외부 라이브러리는 코드를 수정할 수 없으니 외부 라이브러리 클래스 내부에 초기화, 종료 메서드를 선언하긴 어려울 것 같아서 질문드립니다.
-
미해결Java TPC 실전프로젝트 (Java API 활용)
지도가 나오지 않아요
네이버클라우드 가입 후 clientId, clientSecret 모두 발급받았는데 실습 환경을 그대로 따라하는데도 이상하게 지도만 출력되지 않아서 문의드립니다. 혹시 코드나 키를 넣는 부분말고 다시 확인해봐야할 환경설정이 있을까요? 프로젝트를 default가 아닌 com.example에 생성했는데 그것 때문인지 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
[빈 생명주기 콜백 시작] 초기화에 관련해서 질문이 있습니다.
안녕하세요.영한님이 빈 생명 주기 콜백이란 강의에서 말씀해주신 내용과 관련해서 질문이 있어 연락드립니다.위의 그림을 보시면 객체의 생성과 초기화를 분리하자고 되어 있습니다.제가 이 문구를 이해한 바로는 생성자를 통해서 초기화를 하지 말고 setter함수를 통해서 초기화를 하자는 내용입니다.그러나 이 초기화라는 개념이 모호합니다.초기화의 목적은 객체가 사용가능하도록 만드는 것이라고 알고 있습니다.그런면에서 속성값을 넣어주는 것은 초기화라고 생각합니다.하지만 객체에 의존관계를 주입해주는 것도 구체적인 값을 부여해주는 것이기에 초기화라고 할 수 있습니다.그렇다면 의존관계 주입도 setter로 하는게 좋다는 결론이 됩니다.하지만 영한님의 이전 강의 '생성자 주입을 선택해라!' 편에서 말씀해주셨듯이 의존관계의 경우 생성자 주입을 선택하는 것이 좋다는 말씀하셨습니다.여기에 대해 제가 결론을 내린 바로는 속성값을 넣어주는 것과 의존관계 주입 모두 초기화인데 속성값을 넣어주는 것은 setter를 통해 의존관계 주입은 생성자 주입을 통해 라는 것입니다. 속성값을 setter로 넣어주는 이유는 그값이 변할 수 있기 때문이고 생성자 주입을 사용하는 이유는 보통은 객체가 변할 일이 없기 때문일 것입니다.방금전 제가 내린 초기화에 대한 결론이 맞는지 궁금합니다.감사합니다.
-
미해결스프링 핵심 원리 - 기본편
싱글톤 테스트
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의에서 싱글톤은 유연하게 테스트가 어렵다고 말씀해 주셨는데요.어려운 이유가 static이기 때문인가요?클래스가 메모리에 로드될 때 생성되는거라서 유연하지 않은건지 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
강의 로드맵 순서 질문있습니다!
영한님 강의 로드맵을 보고 메모 후 밑의 강의들을 모두 구매한 상태입니다. 1.스프링입문 2.스프링 핵심원리-기본편3.모든 개발자를 위한 http 웹 기본지식 4.스프링 웹 MVC 1,2편5.스프링 DB데이터 접근 기술 1,2편 6.스프링 핵심원리-고급편7.실전! 스프링 부트부트+jpa 현재 2번 스프링 핵심원리- 기본편까진 완강한 상태이고마지막 다음으로 강의에선 기본편 마치고 웹 MVC, DB 접근 기술, 부트까지 가는 방향으로 생각하고 있다고 해주셨는데20년 강의순서 답변과 제가 봤던 로드맵과 마지막 강의에서 추천해주시는게 다 달라서추천해주신대로 바로 다음 스프링 부트와 JPA 실무 완전 정복 로드맵 후에MVC DB로 가면 되는거지학습 순서와 강의 구성을 어떻게 하면 좋을지 여쭙고자 질문 올렸습니다 !
-
해결됨스프링 핵심 원리 - 기본편
스프링 없이
스프링 없이 순수 자바 코드로 런타임 시점에 dependency injection이 가능하게 구현할 수 있나요??
-
미해결스프링 핵심 원리 - 기본편
현 스프링 스타터 셋팅 항목좀 알려주세요 영상이랑 전혀 달라서 손을 못대고 있습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]현 스프링 스타터 셋팅 항목좀 알려주세요 영상이랑 전혀 달라서 손을 못대고 있습니다
-
미해결스프링 핵심 원리 - 기본편
수정자주입에 관한 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요 url이 null에 뜨는거에 관해서 질문드립니다.이전에 수정자 주입에 관해서 강의하신거를 보고 이 강의도 다시보고 질문드립니다. 여기서 수정자 주입이 그냥 @Bean밑에 수정자를두면 당연히 그냥 될줄알았는데 구체적으로 왜 안되는지 단계별로 알려주실수있나요? @Autowire가 없어서 안된건가요? 만약 @Autowired를 썻으면 됬을까요? 생성자를 호출하고 setUrl로 들어가는게 안되는건 알거같기도한데 왜 안되는지 구체적으로 질문해도될까요? 12분50초부근에서 보고 제가 이해한게 잘못된거같아서 혼동이 와서 질문드립니다
-
미해결Java/Spring 주니어 개발자를 위한 오답노트
안녕하세요 아랫분 질문에 서 궁금한점이 있어서 질문드립니다
교정하면 Service Class에서 Repository를 이용해서 Member를 가져옵니다. Repository는 MemberEntity를 Member로 변환한 도메인 모델을 반환해야 합니다. 서비스는 MemberEntity를 알지 못해야 합니다. 이렇게 말씀해주셨는데 1 .이렇게 분리하는 이유는 서로의 결합을 낮추기 위해서인가요? 이렇게 분리를하면 어쩔수없이 서비스 메서드 안에도메인클래스로 변환하는 로직이들어가 오히려 코드가 길어져서가독성을 해치지는않나요?현재 저는 서비스에서 레파지토리에서 엔티티를 가져온후dto 객체로 변환시켜서 (바로 변환을 시키거나 어셈블리라는 클래스를 만들어 여기서 변환 작업을 따로해주는 객체를 만들거나)컨트롤러로 넘겨줍니다. 보편적으로 이방식을 많이했는대따로 도메인 클래스를 생성해서 변환해서 비즈니스로직을 처리하고 dto 객체로 넘겨서 컨트롤러로 전달하는지 왜? 이런건지좀더 자세히 설명해주시면감사하겟습니다 ( 제가 수업을 좀더 열심히듣지않아 질문이 무례한게있음 용서해주세요 ㅠ ㅠ)
-
미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
컬렉션 프레임워크에서 get()
ArrayList<String> a = new ArrayList<>(); a.add("1"); a.add("2"); a.add("3"); int[] arr = {1, 2, 3}; arr[0] = 4; // 가능 a.get(0) = "one"; // 불가능위와 같이 배열도 ArrayList 객체도 모두 Reference type입니다. 배열에 대한 인덱스 접근은 r-value, l-value로 모두 기능할 수 있는데 ArrayList에 대한 get()은 r-value(값으로만 사용)로써만 기능하고 있습니다.get()의 반환형이 E로 제네릭(객체)인데 read only로 취급되는건가요...?get()으로 해당 위치를 참조하는게 아닌건가요?해당 메모리가 아닌 메모리의 값을 꺼내오는건가요? HashMap<String, String> h1 = new HashMap<>(); h1.put("1", "one"); h1.get("1") = "하나"; // 불가능다른 컬렉션 프레임워크지만 동일한 문제입니다.put(key, value)를 사용해 값을 저장하고 get(key)를 사용해 value를 가져올 때 get()으로 값을 바꿀 수는 없는 건가요? HashMap<String, ArrayList<String>> hashMap = new HashMap<>(); hashMap.get(date).add(Obj); // 가능이 경우에는 get()으로 참조한 메모리에 대해 다시 참조하여 메서드 사용이 가능했습니다. 이러한 동작이 get()으로 값을 반환하는 것이 아니라 객체 메모리에 접근한다고 생각했습니다. 위에 질문과 함께 조금 더 직관적인 질문 드립니다. public static void main(String[] args) { // Calendar calendar = new Calendar(); // calendar.run(); HashMap<String, String> h = new HashMap<>(); h.put("1", "before"); System.out.println(h.get("1").equals("1")); // 참조하여 메서드 동작 확인 h.get("1") = "after"; // 불가능 => 왜 안되는지? String str = "before"; System.out.println(str.equals("before")); // 참조하여 메서드 동작 확인 System.out.println(str); str = "after"; // 변경 가능 => 왜 되는지? System.out.println(str); }위 코드에서 각각 get()과 참조 변수 자체로 접근하였습니다.get()으로는 메서드까지는 접근이 가능하나 값 변경이 안되었고참조변수는 메서드 접근은 물론 값 변경(엄밀히 말하면 참조 변경)까지 되었습니다.이유가 궁금합니다. 감사합니다.
-
해결됨스프링 핵심 원리 - 기본편
빈 등록 안 된 상태에서 @Autowired 사용
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8&unitId=55380&category=questionDetail&tab=community&q=602806 저랑 같은 궁금증을 가진 분의 질문을 보았습니다. new AnnotationConfigApplicationContext(); 인자 속에 DiscountService.class만 존재하는 경우, DiscountService 생성자의 매개 변수 타입이 빈 등록이 안 되어 있어 주입해 줄 타입의 빈이 존재하지 않아 오류가 발생해야 한다고 생각하는데 오류가 안 나는 이유는 스프링 컨테이너에서는 Map, List를 주입해 줄 때 내부적으로 빈 Map, List를 먼저 만들고,아무런 빈이 존재하지 않으면 빈 Map, List가 주입하게 되는 것이기 때문에 오류가 발생하지 않는다고 하셨는데 Map, List가 아닌 일반적인 경우와 비교되지 않아 아직 확실히 이해가 되지 않았습니다. 그러면 스프링 컨테이너에서 Map, List가 아닌 일반적인 빈을 주입해 줄 때는Map, List랑 다르게 내부적으로 무언가를 미리 만들어 두지 않기 때문에, 존재하는 빈이 스캔되지 않을 경우 아무 것도 주입할 수 없어서 오류가 나는 것이고, Map, List는 스캔되는 빈들이 따로 없어도 내부적으로 스프링이 만든 비어 있는 Map, List이 있어서 그걸 주입하므로 오류가 안 난다고 이해하면 되는 건가요? 그리고 답변 내용 중에 '스프링 컨테이너에서는 Map, List를 주입해 줄 때 내부적으로 빈 Map, List를 먼저 만들고, ' '빈 Map, List'라는 것은비어 있는 Map, List인가요Bean Map, List인가요?'비어 있는'이랑 '빈(Bean)'이랑 헷갈려서 질문드립니다.
-
해결됨스프링 핵심 원리 - 기본편
AllBeanTest (조회한 빈이 모두 필요할 때, List, Map)
Map을 통해 Bean 이름을 key, Bean 객체를 value로 받고원하는 할인 정책(discountCode)과 key를 매칭시키면 할인 정책을 골라서 사용할 수 있다는 거잖아요Map의 쓰임새는 알겠는데 List를 왜 써야하는지 모르겠어요 List 없이 Map만 사용해도 오류 없이 정상 작동되던데 List의 용도는 무엇인가요?조회한 빈이 모두 필요할 때는 List와 Map이 세트처럼 작용하는 건가요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
int 와 Integer
안녕하세요 선생님, 강의 너무 잘 듣고있습니다^^int와 Integer 둘다 정수 자료형이지만 각각의 차이점이 있다는 점을 배웠는데요!각각을 어느 상황에서 써야할지 조금 헷갈립니다! 제가 생각했을 때 Integer를 써야하는 이유 중 한가지는선언한 변수를 형변환 하는 등 함수가 필요하면 Integer를 쓰는 것 같습니다명확하게 이땐 int를 쓰고, 이땐 Integer 를 쓰는거다 라는 명확한 기준이 있다면 알고싶습니다! 감사합니다^^
-
해결됨스프링 핵심 원리 - 기본편
프레임워크 없이 순수한 자바 코드를 단위 테스트 하는 경우
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]학습 자료의 생성자 주입을 선택하라는 내용에서 '누락' 설명하는 부분에 써진 내용을 보고 질문 드립니다. 아래는 학습 자료에 있는 내용 복붙한 거입니다.프레임워크 없이 순수한 자바 코드를 단위 테스트 하는 경우에 다음과 같이 수정자 의존 관계인 경우 @Autowired가 프레임워크 안에서 동작할 때는 의존 관계가 없으면 오류가 발생하지만, 지금은 프레임워크 없이 순수한 자바 코드로만 단위 테스트를 수행하고 있다. 이렇게 테스트를 수행하면 실행은 된다. 그런데 막상 실행 결과는 NPE(Null Point Exception)이 발생하는데, memberRepository, discountPolicy 모두 의존 관계 주입이 누락되었기 때문이다 여기서 말하고자 하는 바는"프레임워크 없이 순수한 자바 코드를 단위 테스트 하는 경우엔 수정자 주입 방법의 경우 문제가 생긴다."가 아니라"수정자 주입을 하면 만일 개발자의 실수로 뭔가를 누락할 경우 발견하기 어려울 수 있다. 그러므로 수정자 주입을 안 하는 게 좋다."라는 게 맞나요? 즉 수정자 주입으로 해도 테스트할 수는 있지만 여러모로를 따졌을 때 생성자 주입이 실수할 확률이 적어서 낫기 때문인지 궁금합니다. 단위 테스트할 때 set 메서드를 직접 호출하면 수정자 주입의 경우에도 자바로 단위 테스트 할 수는 있는 거죠? 제가 코드를 짰을 땐 되는 것 같은데 제가 제대로 코드를 짠 게 아닐 수 있어서 검증이 제대로 된 건지 모르겠어서 질문드립니다.
-
미해결스프링 핵심 원리 - 기본편
setter와 생성자 모두에 @Autowired를 하면 주입이 중복해서 되나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]수정자 주입 설명하시는 강의 내용 중9:55 부분부터 setter에 있는 @Autowired 2개를 지우고 실행했더니 아무 것도 출력이 안 되었는데, 생성자 부분에서 soutv를 다시 추가하고 실행해 보니 생성자 주입은 정상적으로 되는 것 같더라고요. 그런데 setter에 @Autowired를 붙이고,soutv는 setter와 생성자 모두에 넣고 AutoAppConfigTest를 실행하면setter의 soutv와 생성자의 soutv 모두 실행되고 다음과 같이 출력됩니다.memberRepository = hello.core.member.MemoryMemberRepository@4e70a728discountPolicy = hello.core.discount.RateDiscountPolicy@b7838a9memberRepository = hello.core.member.MemoryMemberRepository@4e70a728discountPolicy = hello.core.discount.RateDiscountPolicy@b7838a9 그럼 setter 주입도 되고, 생성자 주입도 된 건가요? 불필요하게 또 주입을 하게 되었다는 뜻인가요? @Component public class OrderServiceImpl implements OrderService { private MemberRepository memberRepository; private DiscountPolicy discountPolicy; @Autowired public void setMemberRepository(MemberRepository memberRepository) { System.out.println("memberRepository = " + memberRepository); this.memberRepository = memberRepository; } @Autowired public void setDiscountPolicy(DiscountPolicy discountPolicy) { System.out.println("discountPolicy = " + discountPolicy); this.discountPolicy = discountPolicy; } @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { System.out.println("memberRepository = " + memberRepository); System.out.println("discountPolicy = " + discountPolicy); this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; }
-
해결됨스프링 핵심 원리 - 기본편
@SpringBootApplication가 붙은 CoreApplication를 실행할 때
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]@SpringBootApplication 내부에 @ComponentScan이 있기 때문에@SpringBootApplication가 붙은 CoreApplication을 실행하면 컴포넌트 스캔을 하게 되는 거 맞죠? 그런데 만약 @Service, @Controller, @Component @Autowired 등을 전혀 사용하지 않고오로지 설정 클래스의 @Configuration, @Bean을 통해 빈을 등록한다면 CoreApplication을 실행했을 때컴포넌트 스캔이 동작하긴 하지만, 컴포넌트 스캔을 통해 등록되는 빈은 없다고 보면 되나요? 즉, @Bean을 통해 등록되는 빈들은 있어도, 컴포넌트 스캔은 동작은 하되, 스캔을 통해 등록되는 빈은 이 경우엔 없다고 보면 되나요?