묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 핵심 원리 - 기본편
어떤 객체를 스프링 빈으로 등록해야하는지 잘 모르겠어요.
서포터님 안녕하세요! 항상 자세히 답변해주셔서 감사합니다!강의를 듣다가 문득 이런 의문점이 들었습니다.'어떤 객체를 스프링 빈으로 등록해야하는가?''어떤 객체를 스프링 빈으로 등록하지 말아야 하는가?일단, 강의에서 배웠듯 싱글톤이면 안되는 클래스(상태를 갖는 클래스)는 당연히 스프링 빈으로 등록해서는 안 된다고 생각합니다. 혹시 이 외에 스프링 빈으로 등록하지 않아야 하는 객체가 있을까요? 또, '이것만큼은 반드시 스프링 빈으로 관리해야한다'라는게 있는 지 궁금합니다! 서포터님 의견은 어떠신가요?
-
해결됨PHP 7+ 프로그래밍: 객체지향
csrfmiddelware 에러 질문입니다
Undefined property: stdClass::$csrfToken in /Users/ywkim/StudyPHP/php_blog/app/Middlewares/CsrfTokenMiddleware.php:12 Stack trace: #0 /Users/ywkim/StudyPHP/php_blog/app/Middlewares/CsrfTokenMiddleware.php(12): App\Providers\ErrorServiceProvider::App\Providers\{closure}(8, 'Undefined prope...', '/Users/ywkim/St...', 12, Array) #1 /Users/ywkim/StudyPHP/php_blog/vendor/heracles8562/eclair/src/Routing/RequestContext.php(82): App\Middlewares\CsrfTokenMiddleware::process() #2 /Users/ywkim/StudyPHP/php_blog/vendor/heracles8562/eclair/src/Routing/Route.php(36): Eclair\Routing\RequestContext->runMiddlewares() #3 /Users/ywkim/StudyPHP/php_blog/app/Providers/RouteServiceProvider.php(17): Eclair\Routing\Route::run() #4 /Users/ywkim/StudyPHP/php_blog/vendor/heracles8562/eclair/src/Application.php(32): App\Providers\RouteServiceProvider::boot() #5 [internal function]: Eclair\Application->Eclair\{closure}('App\\Providers\\R...', 4) #6 /Users/ywkim/StudyPHP/php_blog/vendor/heracles8562/eclair/src/Application.php(32): array_walk(Array, Object(Closure)) #7 /Users/ywkim/StudyPHP/php_blog/public/index.php(7): Eclair\Application->boot() #8 {main}<script> const $delete = document.getElementById('delete') $delete.addEventListener('click', () => { alert('/posts/' + '<?=$post->id?>'); fetch('/posts/' + '<?=$post->id?>', { method: 'delete', body: JSON.stringify({ _csrfToken: '<?=$_SESSION['CSRF_TOKEN']?>' }) }).then(() => { window.location = '/' }) }) </script>//delete post Route::add('delete', '/posts/{id}', '\App\Controllers\PostController::destroy', [ AuthMiddleware::class, RequireMiddleware::class, CsrfTokenMiddleware::class ]); script부분도 강사님꺼 복붙해서 똑같은데 라우터에CsrftokenMiddleware::class 만 추가하면 에러가 납니다.csrf 미들웨어 들어가있는 다른 라우터는 문제가 안되는데 delete할 때만 저렇게 에러가 나고 삭제처리가 안되네요..왜그런지 알 수 있을까요
-
미해결스프링 핵심 원리 - 기본편
@Component 가 없는데 @Autowired를 어떻게 쓸 수 있는 거죠?
@Component //<--가 들어가 있어야 Autowired를 쓸 수 있는 거 아닌가요? static class TestBean{ @Autowired(required = false) public void setNoBean1(Member noBean1){ System.out.println("noBean1 = " + noBean1); } @Autowired public void setNoBean2(@Nullable Member noBean2){ System.out.println("noBean2 = " + noBean2); } @Autowired public void setNoBean3(Optional<Member> noBean3){ System.out.println("noBean3 = " + noBean3); } }@Component를 붙여서 빈을 자동등록 하게 되면 수동등록으로 의존관계 주입을 해주는 설정 코드를 쓰지 않기 때문에 Autowired를 붙여서 의존관계 주입을 해주는 걸로 알고 있습니다.그런데 수업 예제에서는 @Component가 없는데 어떻게 Autowired가 붙을 수 있는 건가요?
-
해결됨스프링 핵심 원리 - 기본편
getBeansOfType 자동완성
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]스프링 빈 조회 - 상속관계에서 코딩 따라하는 중에,getBeansOfType 을 치고 안에 ~.class 를 입력하면 Map<String, ~> ... 와 같은 부분이 자동 입력되는 것을 보았습니다. 하지만 제가 동일하게 작업하면 아무리해도 자동입력이 되지 않아 계속 일일이 손으로 코딩하고 있습니다. 혹시 방법이 있는건지 알고싶습니다.
-
미해결스프링 핵심 원리 - 기본편
면접에서 DI가 뭐냐고 물어보면 어떻게 대답하죠?
어떤 클래스가 인터페이스에 의존하고 있을 때 어떤 구현객체를 주입할지는 오직 외부의 설정에서 결정되는 것을 의미합니다. 라고 대답하면 될까요 ㅠㅠ?코드로는 이해가 어느 정도 된 거 같은데 말로 설명하려 하니 어렵네요 ....
-
미해결스프링 핵심 원리 - 기본편
solid 면접에서 질문 받으면 어떻게 대답해야 하나요
solid 면접에서 질문 받으면 어떻게 대답해야 하나요?저의 언어로 정제하고 싶은데 알랑말랑 어렵네요 다른 분이 설명하신거 참고해서 나름대로 해석해 봤는데 이렇게 말해도 괜찮을까요? *SOLIDSRP: 단일 책임 원칙(single responsibility principle)한 클래스는 하나의 책임만 가져야 한다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 ᄄᆞ른 것SRP원리를 적용하면 책임 영역이 확실해지기 때문에 한 책임의변경에서 다른 책임의 변경으로의 연쇄작용에서 자유로울 수 있습니다. OCP: 개방-폐쇄 원칙(Open/closed principle)소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. 새로운 변경사항이 발생했을 때 객체를 직접 수정하지 않고도변경사항을 적용할 수 있도록 설계해야함을 말합니다 DI, IoC가 필요합니다. LSP: 리스코프 치환 원칙(Liksov substitution principle)객체는 프로그램의 정확성을 깨지 않으면서 하위 타입의 인스턴스로 바꿀수 있어야 한다. 클라이언트는 인터페이스 구현객체의 내부를 모르기 때문에 믿고 쓰기 위해선 인터페이스를 구현한 객체가 인터페이스의 사용 의도에 맞게 구현해야 된다는 것을 의미합니다. ISP: 인터페이스 분리 원칙(Interface segregation principle)특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다 특정 클래스에서 다 쓰지 않는 다양한 추상메서드가 들어간 커다란 인터페이스 보 다는 인터페이스를 특정 클라이언트에 맞게 구체적이게 쪼개는 것을 의미합니다. DIP: 의존관계 역전 원칙(Dependency inversion principle) 프로그래머는 추상화에 의존해야지 구체화에 의존하면 안된다. 클라이언트가 구현객체에 의존하는 것이 아닌클라이언트와 구현객체 사이에 인터페이스를 두고 클라이언트와 구현객체가인터페이스에 의존하여 구현객체를 변경해도 클라이언트에 변경이 없음을 의미합 니다.
-
해결됨스프링 핵심 원리 - 기본편
영한님 로드맵 jpa 강의 질문드립니다
현재 영한님의 스프링 완전 정복 로드맵을 따라 학습하고 있는데요.JPA 로드맵도 동시에 학습하려 하고 있습니다.JPA 로드맵 학습 전에 스프링 로드맵을 듣고 학습해야 좋을까요? 아니면 충분히 들을 수 있을만한 내용일까요?
-
미해결스프링 핵심 원리 - 기본편
Test 코드에서 this.memberService 질문
Test Code 부분에서 궁금한점이 생겨 질문 남깁니다.Test Code에서는 this.memberService = appConfig.memberService();로 사용하는 것과 차이점이 있나요? this.memberService = appConfig.memberService();memberService = appConfig.memberService();둘다 실행해봤을 때는 정상적으로 테스트 통과하긴 합니다
-
미해결Java TPC 실전프로젝트 (Java API 활용)
채팅관련 질문입니다
안녕하세요 !! 자바 TPC부터 스프1탄, 2탄 등 좋은 강의 잘 보고 있는 학생입니다 !항상 좋은 가르침 주셔서 감사드려요 ㅎㅎ다름이 아니라 해당 자바 기술을 통해 Spring FrameWork 환경에서 채팅 기능을 구현하고자 하는데요..아직 초보라서 어떤 객체에 어떤 내용을 담아야 하는지,화면에 구현할 때 실시간으로 대화가 진행되게 하려면 감이 안오는 상황입니다.. 명령 프롬프트에서가 아닌 웹 뷰 페이지 내에서도 채팅 기능 구현이 가능할까요 ,,?가능하다면 어떻게 할 수 있을까요 ..? ㅠㅠ주제에 조금 벗어난 질문일지 모르지만 웹 페이지에서도 구현이 하고 싶어 여쭈었습니다..!답변 남겨주시면 정말 감사드리겠습니다 ㅠㅠ
-
해결됨객체 지향 프로그래밍 입문
캡슐화 하는 이유에 대해서
클래스 메서드를 사용하는거랑 클래스선언없이 함수를 만들어서 사용하는거랑 어떤 차이가 있나요?요구사항이 변경됬을 때 클래스선언없이 함수만 사용해도 여러곳의 코드를 일일이 변경하지 않아도 되는 장점이 있다고 생각됩니다.이게 캡슐화랑 어떤 관련이 있나요?
-
해결됨스프링 핵심 원리 - 기본편
Bean Type 이 아닌 이름이 중복시
안녕하세요 강사님. Bean 생성 관련해서 여러가지 Test 를 해보다가 의문점이 생긴 부분이 있습니다. 빈 생성 이름이 중복되는 경우는 어떠한 기준으로 bean 을 생성하는 건가요?? Type 이 중복될 때처럼 실행시에 오류를 발생시키지 않는 것 같아서요!@Bean(name = "discountPolicy") public DiscountPolicy discountPolicy(){ System.out.println("AppSpringConfig.discountPolicy : Rate"); return new RateDiscountPolicy(); } @Bean(name = "discountPolicy") public DiscountPolicy discountPolicy2(){ System.out.println("AppSpringConfig.discountPolicy : Fix"); return new FixDiscountPolicy(); }다음과 같이 시도를 해봤을 때, 실행 창에는 Rate 만 출력이 되고, 만약 단순히 코드 위치를 변경할 경우 Fix 가 출력됩니다. 어떤 것을 먼저 읽었냐에 따라서 먼저 등록된 bean 을 유지시킨다고 봐도 되는 걸까요? 또한, ComponentScan 방법을 사용하여FixDiscountPolicy 에 @Component, RateDiscountPolicy에 @Component 를 달 경우 Bean type 중복된다라는 에러를 호출시켰고, 이에 관련하여 강의해주셨습니다. 그래서 @Primary 를 통해 우선권을 가지는 Bean 을 알려줬습니다. 하지만 위와 같이 Bean 등록을 할 경우 왜 같은 에러가 발생하지 않는지 궁금합니다! 둘다 DiscountPolicy 라는 역할 객체에 대한 구현 객체 두개가 등록되고 있는데, 왜 같은 에러가 발생하지 않는 걸까요? 감사합니다!
-
미해결스프링 핵심 원리 - 기본편
Proxy My Logger 에 대한 간단한 질문
안녕하세요~! 간단한 질문이 있습니다! 혹시 그러면 Proxy 를 사용하게 되면 Bean Container 에는 진짜 MyLogger.class 가 등록될 일은 없는 걸까요? Proxy 를 사용하지 않으면 Request 가 들어오면 어쨌든 잠깐이라도 Bean Container 에 등록이 되었다가 폐기 되는 것으로 이해 했었습니다. 하지만 Proxy 를 사용하면 가짜 Porxy My Logger 가 싱글톤처럼 Bean 등록이 되고, 필요시 호출될 때마다 진짜 My Logger 를 사용하려는 클래스에 넘겨주게 되는 것이 맞을까요? (관리 객체는 클라이언트 객체: Controller, Service ).
-
미해결스프링 핵심 원리 - 기본편
getBean의 타입에 대해 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]스프링 컨테이너에있는 스프링 빈을 찾아올때, getBean() 메서드를 통해 찾을수있다고 이해했는데요.메서드를 호출할때 getBean(이름, 타입) 의 형식으로 사용한다고 되어있는데1. 여기서 타입은 어떤 타입을 파라미터로 넣어줘야하는건가요? 예를들면 MemberService memberService = applicationContext.getBean("memberService", MemberService.class); 로 사용할수도있고, MemberServiceImpl memberService = applicationContext.getBean("memberService", MemberServiceImpl.class); 로 사용할수도있는데,어떤 타입을 파라미터로 넣어줘야하는건지 궁금합니다. 스프링빈의 타입인 객체타입(MemberServiceImpl)을 넣어줄수도있고, AppConfig 클래스에있는 memberService메서드의 리턴타입(MemberService) 을 넣어줄수도있는건가요? 일반메소드의 리턴타입처럼 getBean()을 통해서 얻은 객체를 어떤타입으로 받고자한다를 클래스타입으로 적어줘야하는건가요? 2. 그리고 타입을 파라미터로 넣어줄때 .class를 쓰는 이유가 궁급합니다. 예를들면 MemberService의 경우에는 인터페이스라서 MemberService.interface형식으로 넣어줘야할거같은데 .class를 붙여서 넣어주는 이유가 궁급합니다. 3. 1,2번의 질문들을 생각하면서 정리해봤는데, 타입부분에서 파라미터로 넘겨준 MemberService.class는 클래스타입=메서드의 리턴타입 = 역할타입 = 인터페이스타입 이고,MemberServiceImpl.class는 구체타입=객체타입=스프링빈타입이다. 이렇게 정리해봤는데 맞는건가요? 구글링도해보고, 게시판에 비슷한 글이 있나 찾아보기도 했는데 원하는 답변이 없어서 질문드립니다..
-
미해결스프링 핵심 원리 - 기본편
도메인이라는게 정확히 무엇인가요 ??
여기서 말하는 도메인과, 나중에 package로 만드는 domain은 같은 의미인가요 ??? 도메인이 정확히 무엇인지 안와닿아서 알려주시면 감사하겠습니다 !
-
미해결스프링 핵심 원리 - 기본편
수강 커리 질문드립니다.
안녕하세요. 영한님~직장다닐때 패키지로 스프링부트 jpa 실무 로드맵 전부 구매하고이제 취업준비하면서 시작해보려는데 커리큘럼이 많이 바뀐거 같던데db1,2편과 고급편까지 꼭 다 들어야 하나요?? 신입으로 취업을 준비중인데 금액적인 부분에서 부담이되서 jpa로드맵에서 해결이가능하면 결제 안하고 싶은데 답변 부탁드립니다.
-
해결됨스프링 핵심 원리 - 기본편
appConfig.memberService() 와 getBean(MemberService.class)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]공부 중에 제가 이해한 것이 맞는지 아닌지 의문이 들어 질문 남깁니다.//1번 AppConfig appConfig = new AppConfig(); memberService = appConfig.memberService(); //2번 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); MemberService memberService = ac.getBean("memberService", MemberService.class);1번에서 AppConfig 객체를 직접 만들어서 memeberService를 가져오는 것은 순수 Java 코드로 짜기 때문이고 2번에서 AnnotationConfigApplicationContext에서 getBean()메소드를 통해서 가져오는 것은 스프링으로 전환하여 스프링을 이용하는 것이라고 보면 되나요?+ ) 클래스 자료형을 다음과 같이 ApplicationContext로 사용하는 것보다 AnnotationConfigApplicationContext를 클래스 자료형과 생성자를 쓰는 것은 기능상 이유 때문인가요?ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
-
해결됨스프링 핵심 원리 - 기본편
AppConfig에서 static 메소드
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] void configurationTest(){ ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); //구체 타입으로 꺼내면 원래 좋지 않지만 테스트를 위해 Impl를 꺼냄 MemebrServiceImpl memberService = ac.getBean("memberService", MemebrServiceImpl.class); OrderServiceimpl orderService = ac.getBean("orderService", OrderServiceimpl.class); MemberRepository memberRepository = ac.getBean("memberRepository", MemberRepository.class); MemberRepository memberRepository1 = memberService.getMemberRepository(); MemberRepository memberRepository2 = orderService.getMemberRepository(); System.out.println("memberService -> memberRepository1 = " + memberRepository1); System.out.println("orderService -> memberRepository2 = " + memberRepository2); System.out.println("memberRepository = " + memberRepository); Assertions.assertThat(memberService.getMemberRepository()).isSameAs(memberRepository); Assertions.assertThat(orderService.getMemberRepository()).isSameAs(memberRepository); }위의 configurationTest 중 memberRepository가 같은 인스턴스를 공유하고 있지 않아 원인을 AppConfig에서 찾을 수 있었습니다.아래 코드와 같이 AppConfig에서 실수로 static을 넣었기 때문인데 static을 사용하여 정적 메소드를 생성할 경우 왜 싱글톤이 성립하지 않는지 관계가 이어지지 않아서 질문드립니다. // 원 코드 @Bean public MemberRepository memberRepository() { System.out.println("call AppConfig.memberRepository"); return new MemoryMemberRepositroy(); } // static @Bean public static MemberRepository memberRepository() { System.out.println("call AppConfig.memberRepository"); return new MemoryMemberRepositroy(); }
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
코틀린으로 한번 래핑 (수정)
코틀린에서 자바코드를 사용할 때 플랫폼 타입 사용에 유의하여야한다고 하셨습니다.팁으로 자바 코드를 널 가능성을 확인하는 코드를 삽입하던지 아니면 코틀린으로 한번 래핑하라고 하셨는데 여기서 코틀린으로 한번 래핑하라는게 무슨 의미인지 잘 모르겠습니다4강입니다
-
미해결스프링 핵심 원리 - 기본편
빈 생명주기 의존관계주입과 초기화 시점 질문
안녕하세요:) 강의 잘 듣고있습니다. 수강 중 궁금한 점이 생겨 질문드립니다! NetworkClient 클래스와 BeanLifeCycleTest 클래스에서 의존관계 주입과 초기화에 관한 질문입니다. 제가 생각하는 게 맞나 의문이 들어 제 생각을 적어봤습니다. <BeanLifeCycleTest 클래스, lifeCycleTest() 테스트> ConfigurableApplicationContext ac = new AnnotationConfigApplicationContext(LifeCycleConfig.class) 1. 테스트 코드에서 ac라는 스프링 컨테이너를 생성한다. 스프링컨테이너를 생성할 때 구성정보로 LifeCycleConfig.class를 지정해줬다.@Configurationstatic class LifeCycleConfig {@Beanpublic NetworkClient networkClient() {NetworkClient networkClient = new NetworkClient();networkClient.setUrl("http://hello-spring.dev");return networkClient;} }2. LifeCycleConfig.class에 있는 @Bean이 붙은 메서드들을 스프링 컨테이너에 빈으로 저장한다. networkClient라는 이름을 가진 빈이 생성된다.2-1. networkClient라는 빈에서 NetworkClient 타입의 객체networkClient 가 생성된다.2-2. 객체가 생성됨과 동시에 NetworkClient() 생성자를 호출해 맨 처음 "생성자 호출, url = null이" 출력된다.2-3 NetworkClient 타입인 networkClient에 setUrl("http://hello-spring.dev") 을 통해 url에 값을 저장한다.3. https://www.inflearn.com/questions/653260 위 글을 살펴보면 답변에서의존관계 주입이 setUrl() 다음에 이뤄진다고 하셨는데,,, setUrl() 호출 다음이면 위의 제 생각 중 2-3번 다음인가요,,,? 의존관계 주입 방법에 생성자를 통한 주입이 있으므로 생성자 호출 시 의존관계 주입이 이뤄지는 건가요,,,? 아님 스프링 컨테이너에 빈이 생성되면서 의존관계 주입이 일어난다. 크게 생각하면 되는건가요,,? 어디서 일어나는 건지 질문드립니다. 4. "스프링 빈은 객체를 생성하고, 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 수 있는 준비가 완료된다. 따라서 초기화 작업은 의존관계 주입이 모두 완료되고 난 다음에 호출해야 한다." 의존관계 주입이 완료되면 초기화 작업이 이루어진다고 수업 자료에 나와있는데요,초기화란 객체를 선언하고 값을 최초로 할당하는 것이라고 알고있습니다.그럼 위의 코드에서는 객체 생성, 즉 생성자 호출 후 setUrl()로 값을 주입하는 게 초기화 작업이 맞을까요..? 만약 맞다면 결론적으로 NetworkClient networkClient = new NetworkClient(); -> 의존관계 주입networkClient.setUrl("http://hello-spring.dev"); -> 초기화 작업이게 맞는건가요,,?이렇게 되면 3번에 언급되었던 게시글 답변 중, 스프링 컨테이너 실행 -> 스프링 빈으로 등록 -> setUrl() 호출 -> 의존관계 주입 -> 초기화 이 순서에 의문이 생기게 되는데 어떤 순서가 정확한지 질문드립니다!!
-
미해결홍정모의 게임 만들기 연습 문제 패키지
(20.4 참고) 20.4에 해당하는 가이드 페이지가 어디있는지 모르겠습니다.
Vcpkg를 이용해서 opengl, glew, glfw3 설치(20.4 참고)위 글을 보면 20.4를 참고하여 설치하라는 것 같은대요. 20.4가 어디에 있는지 무엇을 참고 해야하는지 모르겠습니다. 유튜브를 통해 c / c++을 듣고 api를 듣는 도중 해당 강의를 알게 되어 해당 강의를 우선적으로 듣고 api를 들어보는게 좋을 것 같아서 구매를 했는대요. 20.4 / 20.5 / 20.6 참고하라는 말이 있는대 어디를 들어가야 참고할 수 있는지를 모르겠습니다. 알려주시면 감사하겠습니다. ㅜㅠ