묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
item
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]item 을 추상 클래스로 만든 이유가 뭘까요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
질문 있습니다.
동시성 프로그래밍에서 발생할 수 있는 데이터 정합성이 깨지는 것을 방지하기 위해 DB에서는 락을 도입했다는 부분을 잘 이해했습니다. 수업 내용 중에 memberA의 계좌를 세션1과 세션2에서 각각 500원과 1000원으로 변경하려고 시도하는 부분에서, 세션1이 먼저 락을 획득하고 500원으로 커밋한 다음에 세션2가 1000원으로 수정하였습니다.제가 생각하기에 세션2가 계좌를 1000원으로 수정하려는 시도는, 계좌가 10000원인 상태에서 비즈니스 로직에 따라 데이터를 변경하려고 했다고 생각합니다. 따라서 세션2가 락을 획득했을 때 기존 계좌의 데이터가 변경되었다면, 이미 세션2의 트랜잭션이 시작되어 락을 요청한 상태여도, 획득한 락을 받아들여 그대로 트랜잭션을 실행하지 않고 다시 비즈니스 로직을 검토하는 과정이 필요할 것으로 생각 됩니다.이러한 문제점이 발생했을 때 개발자가 취할 수 있는 방법이 있을까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
쓰레드 컨텍스트 스위칭 관련 질문 드립니다.
먼저, 제가 컨텍스트 스위칭에 대해 알고 있던 내용은 프로세스 컨텍스트 스위칭인데, CPU 코어 하나당 하나의 프로세스만 점유를 할 수 있기에, 한 코어에서 여러 프로세스를 번갈아 가며 수행하기 위해 컨텍스트 스위칭이 일어난다고 알고 있습니다. 궁금증이 생긴 부분은 쓰레드 컨텍스트 스위칭의 구조와 스프링 웹플럭스에서 쓰레드의 개수를 CPU 코어의 개수에 따라 설정해두어 성능을 높인다는 부분입니다. 쓰레드는 프로세스에 종속적이라고 알고 있습니다. 한 프로세스 안에서 여러 쓰레드가 생성 될 수 있는 건 알지만, 그렇게 생성된 여러 쓰레드 간에 컨텍스트 스위칭이 일어난다는 것은, 무엇을 점유하기 위해 발생하는 것인지 궁금합니다. 프로세스는 CPU 코어를 점유하기 위해 컨텍스트 스위칭이 일어나기에, 쓰레드도 CPU 코어를 점유하기 위해 컨텍스트 스위칭이 일어난다 생각해보기는 조금 모순인 부분이 있어 질문 드립니다. 또한, 스프링 웹플럭스에 관련한 부분도, 한 프로세스는 하나의 CPU를 점유하기에 그 프로세스 안에서 생성된 쓰레드 또한 해당 프로세스가 점유한 CPU 코어에만 관련되어 수행된다고 생각했는데, 쓰레드 개수를 CPU 개수에 맞췄다는 말은 쓰레드를 생성한 프로세스가 점유한 CPU 코어 외 다른 코어도 쓰레드가 쓸 수 있다는 것인가 싶어 질문 드립니다. 감사합니다.
-
미해결스프링 부트 개념과 활용
자동 설정 만들기 2부에서 질문 있습니다
자동 설정 만들기 2부:@ConfigurationProperies에서 진행하다가 에러가 발생했습니다spring boot getting started 프로젝트에서 빈을 등록하지 않으면spring boot starter의 HolomanConfiguration에서 @ConditionalOnMissingBean과 AutoConfiguration을 통해HolomanProperties의 값을 참조해서 application.properties에 있는 내용으로 빈을 만드는 것으로 이해했습니다따라서 Application 프로젝트에서 빈을 재정의할 필요없고 properties만 정의하면 되는 것으로 알고 강사님 코드를 다시 살펴봤는데 어디를 고쳐야 되는지 잘 모르겠습니다...아래는 HolomanProperties와 에러가 발생한 실행결과를 올렸습니다
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
안녕하세요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]pathvariable 을 쓰는 경우와 requestparam 을 쓰는 경우가 나뉘어져 있나요? 아니면 둘의 역할이 달라 다르게 쓰는 건가요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
helloController 중 addAttribute
이 부분에서 문제가 발생하는데 어떻게 해결해야할까요?위에 Model에서 오류나는 부분은 다른분의 질문을 보고 해결했는데 이 부분은 질문을 찾지 못해 올립니다!
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 편의 메서드 질문 입니다.
연관관계 편의 메서드가 아래와 같은 상황에서 사용되는 것이 맞는지 궁금해서 질문드립니다. Project, Client 클래스가 서로1 대 다, 다 대 1 관계라고 했을 때 Project를 등록할 때 Client가 필요하기 때문에Project 쪽에이런 식으로 연관관계 편의 메서드를 작성해 주고 아래와 같이 Project의 createProject2 메서드를 이용하여 등록해준다고 하면 Project 쪽에서 작성해둔 연관관계 편의 메서드를 아래와 같이 사용하는 게 맞는 사용 방법인가요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
프록시 내부 호출 문제
프록시 내부 호출 강의를 들으면서 "그러면 클래스단에 @Transactional을 사용해서 모든 메서드에 트랜잭션을 적용하면 애초에 이런 문제가 발생 안하지 않나?" 라는 생각이 들었습니다.혹시 이런 방법은 좋지 않은 방법인가요?
-
미해결스프링 핵심 원리 - 기본편
ApplicationContext 통한 객체 추출의 단점
안녕하세요! 강의 잘 수강하고 있습니다. ApplicationContext 통해서 객체 추출하면 컴파일 타임에서 오류를 찾기 어려운 단점이 있는 것 같아서, 정말 단점이 맞는지 확인하고 싶어서 질문드립니다.Spring을 적용하기 전 AppConfig를 직접 사용하던 경우에는 method 호출로 객체를 생성하기 때문에 method 이름이 변경된다면 컴파일 에러로 발견할 수 있습니다.그런데 AnnotationConfigApplicationContext을 사용하고 나서는 등록된 Bean을 이름으로 검색해서 찾아오기 때문에 런타임 에러가 발생할 가능성이 생깁니다.만약 제가 AppConfig 내의 method 이름을 변경하면 아래 코드는 에러를 만들게 됩니다.ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); MemberService memberService = applicationContext.getBean("memberService", MemberService.class);@Configuration public class AppConfig { @Bean public MemberService emberService() { // 오타 발생 return new MemberServiceImpl(memberRepository()); } }이렇게 되면 정적 타입 언어의 장점을 상쇄시키는게 아닌지 의문이 들었습니다. 그리고 서버 운영중에 Bean을 찾지 못해서 장애가 발생하는 경우는 없는지도 궁금합니다! 제가 뭔가 이해를 잘못했거나 내용을 놓쳤을 수도 있을 것 같습니다. 답변 기다리겠습니다 🙏
-
미해결스프링부트 시큐리티 & JWT 강의
intelliJ jdk11 oauth로그인 에러 문제입니다.
안녕하세요 훌륭한 강의를 잘 듣고있는 학생입니다.다름이 아니라 제가 oauth로그인을 하면 오류가 발생하여 문의드립니다.우선 저는 jdk11과 Gradle을 사용하고있습니다.위와 같이 잘 작동하다가 아래와 같이 oauth로그인을 사용하면 에러가 발생합니다.Parameter 0 of method setFilterChains in org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration required a bean of type 'org.springframework.security.oauth2.client.registration.ClientRegistrationRepository' that could not be found.에러의 총 내용은 위와 같습니다.그래서 다른 질문들의 답변을 보니 라이브러리의 충돌 및 다운로드의 문제인거 같아 intelliJ에서 제공하는 invalidate cache기능을 사용하여 다시 재빌드를 하였지만 같은 에러가 발생하고 .\gradlew --refresh-dependencies를 사용하여 재빌드 또한 진행하였지만 같은 결과가 나왔습니다. 마지막으로 toolbox 및 인텔리제이를 다시 실행해도 같은 현상이 발생합니다. 혹시 방법을 알 수 있을까요??
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
RequestMappingHandlerMapping이 더이상 @RequestMapping이 붙은 클래스를 매핑 정보로 인식하지 않습니다.
안녕하세요 좋은 강의 항상 잘 보고 있습니다. 다름이 아니라 8분 경 RequestMappingHandlerMapping은 스프링 빈 중에서 @RequestMapping 또는 @Controller가 클래스 레벨에 붙어 있는 경우 매핑 정보로 인식한다 하였는데, 스프링 6 버전 이후부터는 @RequestMapping은 인식하지 않게 변경된 것 같아 말씀 드립니다. 관련 커밋 링크 참조합니다!https://github.com/spring-projects/spring-framework/commit/3600644ed1776dce35c4a42d74799a90b90e359e 감사합니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
문제가 발생 할 수 있는 이유가 이해가 되지 않습니다.
private void validateDuplicateMember(Member member) { List<Member> findMembers = memberRepository.findByName(member.getName()); if (!findMembers.isEmpty()){ throw new IllegalStateException("이미 존재하는 회원 입니다."); } }에서 memberA가 동시에 DB에 insert 될때 validateduplicate를 통과하면 동시에 memberA가 로직을 호출하게 되면 memberA라는이름으로 두명이 가입 됩니다. 그래서 memberA에 제약을 건다구 하셨는데제약을 거는거 어떤건지 잘 모르겠습니다. 1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결스프링 핵심 원리 - 기본편
수업질문
의존관계 자동주입에서 질문있습니다.(영상시간 18분 16초) @Autowired를 통해 의존관계 주입에서 자료타입에 따라 설정된다고 하였는데, DiscountPolicy 자료타입에서 rateDicountPolicy가 @Component 설정이 되어있어서 rateDicountPolicy 만 의존관계 자동주입설정된건가요? @Component 유무에 따라서 자료타입지정이 가능하면 자료타입 중(FixDiscountPolicy,RateDiscountPolicy) 하나만 설정으로 해야겠네요?? 여러개를 설정하면 충돌에러가 뜨나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
afterCompletion 에서의 에러 로깅
안녕하세요, afterCompletion() 에서 에러 로깅과 관련해서 질문드립니다.현재 강의에서는 컨트롤러에서 예외가 터지면 afterCompletion() 의 파라미터 ex 가 널이 아니니까 이 ex를 통해 어떤 에러가 났는지 로깅을 해주고 있습니다.그렇다면 만약 @ExceptionnHandler 를 이용해 컨트롤러의 예외처리를 한다면 이 ex 는 별도로 사용하지 않아도 될까요?(거의 사용을 안 하게 될 것 같은데, 맞나요?)항상 영한님과 서포터님들께 감사드립니다!🙇♂️
-
미해결스프링 핵심 원리 - 기본편
@Component로 등록한 빈을 조회하는 방법은 어떤게 있나요?
@Component로 등록한 빈을 조회하는 방법은 어떤게 있나요?궁금합니다. 아래와 같은 코드가 아니라 다른 클래스를 이용해야 하나요?AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class );
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
왜 addStock, removeStock 메서드를 사용하는 것이 왜 객체지향적인지
강의에서 setter 메소드로 재고 수량을 조절하는게 아니라 addStock 메서드, removeStock 메서드를 이용해 재고 수량을 조절하는 것이 객체지향적이라고 하셨는데 왜 이게 객체지향적인지, setter 메소드를 사용하는 것이 왜 객체지향과는 거리가 있는 것인지 자세하게 설명 부탁드립니다. 감사합니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Entity 내의 로직들, 생성 함수에 대한 질문
안녕하세요! 간단한 질문이 있어서 살짝 남겨보게 되었습니다. 1. 지금까지 JPA 강의를 들으면서 - "Entity 에는 Setter 를 열어두지 말고, Getter 만 열어둔채, 초기값 Setting 에는 생성자를 사용하라. 그리고 변경에 대해서 setter 가 필요하다면 그 때 열어두고, 연관관계에 대해 수정시 setting 외의 로직을 수행해야 하기 때문에 change, modify 등의 수식어를 사용해서 함수를 만들어라 ". 정도로 이해하고 있었습니다. 이 관점에서 createOrder() 함수는 설명해주신대로 그냥 Order 을 생성해주는 함수고, 초기값을 setting 해주는 함수인데, 이게 생성자와 어떤 점에서 다른지 이해가 잘 되지 못했습니다. public Order(Member member, Delivery delivery, OrderItem ... orderItems){ this.member = member; this.delivery = delivery; ... OrderItem for 문 this.status = OrderStatus.ORDER; this.orderDate = LocalDateTime.now(); }위처럼 그냥 생성만 해주는 함수와 어떤 차이가 있는지 이해를 못하였습니다 ㅠㅠ2. 비즈니스 로직들을 Service 단에서 수행하지 않고, Entity Class에서 모두 짜는 이유가 잘 이해가 되지 않았습니다 ㅠ 애를 들면 cancel() 의 명령어 같은 경우, ~~ /orderItem/cancel/3 이런식으로 들어오게 된다면, Service Layer 에서 OrderItem 조회하고, Repository 를 호출하며 Order에 대한 \ 필요 로직 수행, Item에 대한 필요로직 수행을 하는것으로 생각을 했어서 그런 것 같습니다. 지금 현재 강의 부분과 같은 설계는 약간 영속성 컨텍스트를 계속 관리하면서 필요 SQL들이 자연스럽게 호출되게 하는 방식인 느낌인데 이런 방향이 맞을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@PersistenceContext 에 대하여
안녕하세요강의 중 @PersistenceContext 에 대해 궁금한 점이 생겨서 질문을 남기게 되었습니다.JPA 기본편 강의도 완강 후에 듣고 있는 상태인데요, 제가 이해했었던 바는, 한 영속성 컨텍스트에는 한 EntityManagerFactory 가 할당되고, 그 영컨에서 진행하는 각각의 트랜젝션들을 처리하기 위해 EMF가 각각 EntityManager를 생성하여 트랜젝션마다 할당해서 처리할 수 있도록 도와준다고 이해하였습니다.위에 이해한 바가 맞다면, 앱이 실행되면서 MemberRepository 가 싱글톤 컨테이너에 의해 관리되기 시작하면서, 이 때는 EntityManager 가 트랜젝션이 들어오지 않았기 때문에 할당받지 못한 상태여야 할 것 같습니다. 그리고 save, findOne, findAll 등의 트랜젝션을 수행하기 위한 함수들이 호출될 시 EntityManager 가 생성되고 할당받는 것이 맞을까요? 즉, 싱글톤 컨테이너 안에 있는 Repository 안에 있는 EntityManager em 은 트랜젝션이 수행되기 전에는 NULL이라고 보면 될까요?제가 이해한 내용이 맞는지 궁금해서 문의글 남기게 되었습니다. 항상 도움주셔서 감사합니다 :]
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
redirect RestController
안녕하세요.redirect를 써서 새로고침 시에중복 방지하는 것까지는 이해를 했습니다. 그런데 만약에,restcontroller일 경우즉 값만 받아서 저장하고 값만 돌려주는 경우에는따로 redirect 처리하지 않아도 되는 거죠?예를들면 javascript로 ajax를 사용해서값을 보내고 저장(또는 삭제, 수정) 하는경우일 때가 궁금한것입니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
./gradlew clean build 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.jpashop % ./gradlew clean build > Task :test JpashopApplicationTests > contextLoads() FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:98 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1804 Caused by: org.hibernate.service.spi.ServiceException at AbstractServiceRegistryImpl.java:275 Caused by: org.hibernate.HibernateException at DialectFactoryImpl.java:100 MemberRepositoryTest > testMember FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:98 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1804 Caused by: org.hibernate.service.spi.ServiceException at AbstractServiceRegistryImpl.java:275 Caused by: org.hibernate.HibernateException at DialectFactoryImpl.java:100 2 tests completed, 2 failed > Task :test FAILED FAILURE: Build failed with an exception. * What went wrong:Execution failed for task ':test'.> There were failing tests. See the report at: file:///Users/king/study/jpashop/build/reports/tests/test/index.html * Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 17s task.named 전부 주석처리 해보고 밑에 useJunutPlatform이부분도 주석처리 해보고 했는데도 오류 납니다 RunWith도 지워보고 해봣는데 안됩니다