묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 핵심 원리 - 기본편
섹션7 조회한 빈이 모두 필요할 때 List, Map이 null로 나옵니다
제목 그대로 테스트 케이스 진행시List와 Map이 모두 null로 조회되어 테스트 오류가 발생합니다package hello.core.autowired.allbean; import hello.core.discount.DiscountPolicy; import hello.core.member.Grade; import hello.core.member.Member; import hello.core.order.AutoAppConfig; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import java.util.List; import java.util.Map; import static org.assertj.core.api.Assertions.*; public class AllBeanTest { @Test void findAllBean(){ ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class); DiscountService discountService = ac.getBean(DiscountService.class); Member member = new Member(1L, "userA", Grade.VIP); int discountPrice = discountService.discount(member, 10000, "fixDiscountPolicy"); assertThat(discountService).isInstanceOf(DiscountService.class); assertThat(discountPrice).isEqualTo(1000); int rateDiscountPrice = discountService.discount(member, 20000, "rateDiscountPolicy"); assertThat(discountPrice).isEqualTo(2000); } static class DiscountService { private final Map<String, DiscountPolicy> policyMap; private final List<DiscountPolicy> policyList; public DiscountService(Map<String, DiscountPolicy> policyMap, List<DiscountPolicy> policyList) { this.policyMap = policyMap; this.policyList = policyList; System.out.println("policyMap = " + policyMap); System.out.println("policyList = " + policyList); } public int discount(Member member, int price, String discountCode) { DiscountPolicy discountPolicy = policyMap.get(discountCode); return discountPolicy.discount(member, price); } } }java.lang.NullPointerException: Cannot invoke "hello.core.discount.DiscountPolicy.discount(hello.core.member.Member, int)" because "discountPolicy" is null이라는 오류가 발생하는데 어느 부분이 문제인가요
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
26강 서버실행 오류
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.2024-06-28 18:38:36.868 ERROR 35116 --- [ main] o.s.boot.SpringApplication : Application run failedorg.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Unsatisfied dependency expressed through method 'dataSourceScriptDatabaseInitializer' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: com.mysql.cj.jdbc.Driver at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:541) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) ~[spring-context-5.3.24.jar:5.3.24] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) ~[spring-context-5.3.24.jar:5.3.24] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.24.jar:5.3.24] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) ~[spring-boot-2.7.6.jar:2.7.6] at com.group.libraryapp.LibraryAppApplication.main(LibraryAppApplication.java:10) ~[main/:na]Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: com.mysql.cj.jdbc.Driver at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:638) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:887) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ~[spring-beans-5.3.24.jar:5.3.24] ... 21 common frames omittedCaused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: com.mysql.cj.jdbc.Driver at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.24.jar:5.3.24] ... 35 common frames omittedCaused by: java.lang.IllegalStateException: Cannot load driver class: com.mysql.cj.jdbc.Driver at org.springframework.util.Assert.state(Assert.java:97) ~[spring-core-5.3.24.jar:5.3.24] at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.determineDriverClassName(DataSourceProperties.java:171) ~[spring-boot-autoconfigure-2.7.6.jar:2.7.6] at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.initializeDataSourceBuilder(DataSourceProperties.java:123) ~[spring-boot-autoconfigure-2.7.6.jar:2.7.6] at org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration.createDataSource(DataSourceConfiguration.java:48) ~[spring-boot-autoconfigure-2.7.6.jar:2.7.6] at org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari.dataSource(DataSourceConfiguration.java:90) ~[spring-boot-autoconfigure-2.7.6.jar:2.7.6] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.3.24.jar:5.3.24] ... 36 common frames omitted기존에 저랑 같은 문제를 갖고 있는 학우 분 코멘트 따라서runtimeOnly 'com.mysql:mysql-connector-j'기존 runtimeOnly 의존성을 지우고 해당 코드를 추가해줬지만 여전히 같은 에러가 나옵니다.어떻게 해결하면 좋을까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
request값으로 뭘 넣어야할지 잘 감이 안옵니다..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]김영한 강사님의 mvc와 jpa 수업을 어느정도 듣고 프로젝트를 참가하였는데 종종 까먹어서 다시 와서 듣곤 합니다. 근데 최근 프로젝트를 하면서 계속 헷갈리는게 request 값을 어떻게 넣어줘야할지 모르겠습니다...restController를 만들고있는데 만약 댓글 생성하는 컨트롤러를 만든다고 치면, board_Id는 @pathvariable을 통해서 가져와 getID 하면 된다고 치지만. 글을 작성하는 User는 어떻게 받아와야할지... 그냥 냅다 request에 User user를 받아와도 되는건지 헷갈립니다.. 프론트를 안해봐서 그런지 더 헷갈리는거같아요. 만약에 댓글을 작성하는 컨트롤러를 만든다고 하였을 때, User user, @pathvariable board_id, comment comment 라고 한다면 comment는 form에서 Post로 값이 넘어오는 건 알겠는데 User같은 경우는 어떻게 받아야하나요..?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
강의 자막 오류입니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예[질문 내용]여기에 질문 내용을 남겨주세요.HTTP 요청 데이터 - POST HTML FORM 강의 중28초 ~ 49초까지 자막 오류가 있습니다 수정 부탁드립니다.첫 자막은 제가 수정했고 그 이후 자막 추가해주시면 될 것 같습니다!
-
미해결토비의 스프링 6 - 이해와 원리
스프링 입문, 초보에게도 괜찮은지
안녕하세요! 토비님, 제가 현재 JAVA와 DB를 공부하고 스프링으로 넘어가려고 합니다.다른 스프링 강의들은 구버전이던가 겉핥기 식 강의가 많은걸 후기로 많이 봤습니다.그래서 최신 버전이기도 하고 수강평에 초보자가 들어도 괜찮다해서 스프링 입문을 토비님 강의로 시작하려하는데 괜찮을지 고민이되네요,,!
-
해결됨토비의 스프링 6 - 이해와 원리
@Transactional 에 대해서 질문이 있습니다.
모든 강의를 듣고 따라하면서 재미나게 실습했습니다.그 중에서롤백테스트할 때jakarta.transaction.Transactional또는org.springframework.transaction.annotation.Transactional의@Transactional만을 사용하면 정상동작합니다. 그런데,org.springframework.transaction.annotation.Transactional@Transactional(readOnly = true)readOnly = true 를 사용하여 테스트를 하면 insert 가 진행되지 않을 것을 예상했는데 진행이 되었습니다.왜 그런지 궁금합니다. 그리고,인프런안의 Kotlin 강좌중 추천할만한 강의가 있을까요?어제 유튜브에서 최근의 건강에 대해서 언급하셨는데,건강하고 늘 행복하게 보내세요.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
H2 데이터베이스 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]test.mv.db 파일 생성된 것 확인하고 그다음에 jdbc:h2:tcp://localhost/~/test이거 복사 붙여넣기 해서 연결 눌렀더니 사진처럼 연결이 안되네요 이거 관련된 질문 찾아봤는데 파일 지우고 다시 만들라는데 윈도우 cmd에서 touch 명령어가 안먹히는데 어떡하나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
요청 로그 남기기
요청로그를 남길때 인터셉터보다 서블릿 필터에서 남기는게 더 좋지 않나요?왜냐하면 mvc로 진입하기 이전에 문제가 발생하면 로그 자체도 못남길수 있을텐데처음에 더 앞단인 서블릿 필터에서 요청 로그를 남기는게 좋지않나요?
-
미해결토비의 스프링 부트 - 이해와 원리
커스톰 @Conditional 에서 다양하게 의존성 주입이 가능한가요?
@Conditional 강의를 들으면서, 특정 조건(Condition)에 따라서 의존성 주입을 A, B로 변경할 수 있어서 흥미롭게 보게되었습니다.토비님께서 예제로 설명해주신 웹서버 설정외에 다른 방법도 가능할까요?matches 메서드 안에서 DB를 조회하여, 해당 값으로 인해 A, B로 의존성 주입이 가능할까요??-> 서비스 빈을 찾아서 jpaRepository로 조회할려고 하니, jpaRepository가 null이 되어 아직 주입되지 않는 듯 합니다. 다른 방법이 있을까요?사용자구성정보랑 자동구성정보의 빈 생성 시점이 달라서 인지 궁금합니다.gradle 설정에서 implement의 설정에 따라서 @Conditional matches로 의존성주입이 가능하던데, 마찬가지로 멀티모듈구성시 모듈의 주입되지 않을경우, @ConditionalOnMissingBean으로 멀티모듈의 빈이 아닌 해당빈으로(디폴트 빈)으로 설정이 가능한지 궁금합니다.바쁘실텐데 답변주시면 감사하겠습니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
메시지, 국제화 처리 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]메시지, 국제화 처리를 thymeleaf에서는 #{} 로 처리를 하지만 리액트와 협업을 할 때는 어떻게 메시지, 국제화 처리를 하나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인텔리제이 설치부터 설정까지 강의를 봐도 안나와있어서 문의드려요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.스프링 입문 수업을 듣고있는데 처음부터 막혔어요 ㅜㅜ 인텔지제이 설치부터 설정을 처음부터 어떻게 해야하나요 강의에서는 인텔리제이가 이미 깔려있고 설정도 어느정도 마친상태로 하던데 어떻게 해야하냐요
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
스프링은 아닌데 강사님께 궁금한점.....
우아한 형제들에서 실제 개발하실 때 개발 방법론을 적용해서 개발을 하고 그것을 모두가 지킬 수 있게 교육(?) 같은 것도 진행하나요 ?? 애자일 방법론 이런 것들이 잘 적용되며 효율적이었는지가 궁금합니다....넘 강의 외적인 질문이라면 죄송합니다...
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
servlet 관련 코딩 질문
실제 코드를 짤땐 servlet 자체를 쓰지 않고 쓰기 좋게 추상화되어서 MVC 패턴을 사용하는(?)게 맞지요??
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트코드를 통해 mysql의 특정 테이블에 넣고 싶은데 어떻게 해야하나요??
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결스프링 핵심 원리 - 고급편
this와 target 차이
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 선생님.덕분에 인강을 통해서 스프링에 대해서 깊은 이해와 함께 학습을 하고 있습니다. 매우 감사드립니다.영상 강의를 듣던 중에 this 와 target 의 차이를 공부하던 중에 이해가 되지 않는 부분이 있습니다.MemberServiceImpl 구체 클래스 지정**this(hello.aop.member.MemberServiceImpl) : proxy 객체를 보고 판단한다. JDK 동적 프록시로 만들어진 proxy 객체는 MemberService 인터페이스를 기반으로 구현된 새로운 클래스다. 따라서 MemberServiceImpl 를 전혀 알지 못하므로 AOP 적용 대상이 아니다. target(hello.aop.member.MemberServiceImpl) : target 객체를 보고 판단한다. target 객체가 MemberServiceImpl 타입이므로 AOP 적용 대상이다.이 분에서 이해가 되지 않는 것이 있습니다. 스프링 AOP는 프록시 기반의 AOP를 구현하고 있으며, 스프링 컨테이너의 관리 하에서 프록시 객체를 기반으로 AOP를 적용한다고 이해하고 있습니다. 더불어 프록시 생성 방법은 JDK 동적 프록시(인터페이스 기반 구현 프록시)와 CGLIB(구체 클래스 기반 상속 프록시) 를 통해 알고 있습니다. this 와 target 지시자를 사용하면,this 는 결국 런타임에서 동적으로 생성된 프록시를 대상으로 aop를 적용하는 것이며, 이때 프록시는 JDK 동적 프록시와 CGLIB 중에 생성된 것을 대상으로 한다고 이해하고 있습니다.target 은 실제 대상 객체를 호출하는데, 대상 객체는 프록시 아닌데 어떻게 aop를 적용하는지 이해가 안됩니다.
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
안녕하세요!
안녕하세요!선생님께서 올려주신 강의를 수강하고 있는 수강생입니다!다름이 아니라 강의의 정리 또는 요약을 한 내용을 블로그 또는 깃허브에 올려도 괜찮을까요??출처는 모두 표시하겠습니다!이상입니다!감사합니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
글로벌 예외 처리를 서블릿?
스프링으로 rest api 서버를 만들때 RestControllerAdvice를 사용하여 컨트롤러 이하 레벨의 예외를 공통으러 처리하는데 서블릿 필터를 이용하여서도 공통 예외 처리가 필요할까요..?
-
미해결Java/Spring 주니어 개발자를 위한 오답노트
강의내용 중 Fake Repository 질문
안녕하세요. 강의 잘 듣고있습니다.제가 요즘 TDD에 대해서 이제 막 공부를 시작했습니다. 테스트방법에 대해서 mocking, stubbing이 있더라구요. 강의 내용 중 말씀해주신 FAKE 객체를 만들어서 테스트하는 방식이 Stubbing 방식이란 같은 것일까요? 실무에서도 Mockking 보다는 Stub객체를 만들어서 테스트하는 경우가 더 많은가요?아직 mocking과 stub객체를 사용해서 테스트 하는 방식의 차이나 목적이 이해가 잘 되지 않아서 질문드립니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 vs 스프링 부트
선생님 안녕하세여 강의 열심히 듣고 있는 학생입니다.다름이 아니라 프로젝트 제작 하려고 하는데 스프링과 스프링 부트 중에 어떤 걸 더 추천하시나요? 선생님 의견이 궁금합니다.
-
미해결실전! 스프링 데이터 JPA
쿼리 힌트 말고 트랜잭션 어노테이션 활용 질문이요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.조회만을 위한 메서드를 작성할때 쿼리 힌트를 사용하는것보다 트랜잭셔널 메소드 레벨 어노테이션에 readOnly=true 속성을 넣어서 읽기 전용으로 사용하면 안되나요?