inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

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을 찾지 못해서 장애가 발생하는 경우는 없는지도 궁금합니다! 제가 뭔가 이해를 잘못했거나 내용을 놓쳤을 수도 있을 것 같습니다. 답변 기다리겠습니다 🙏

  • applicationcontext
  • spring
  • oop
  • di_container
홍성호 댓글 1 좋아요 1 조회수 644

intelliJ jdk11 oauth로그인 에러 문제입니다.

미해결

스프링부트 시큐리티 & JWT 강의

안녕하세요 훌륭한 강의를 잘 듣고있는 학생입니다. 다름이 아니라 제가 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 및 인텔리제이를 다시 실행해도 같은 현상이 발생합니다. 혹시 방법을 알 수 있을까요??

  • jwt
  • spring
  • Spring Security
lcm2822 댓글 2 좋아요 1 조회수 3841

RequestMappingHandlerMapping이 더이상 @RequestMapping이 붙은 클래스를 매핑 정보로 인식하지 않습니다.

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

안녕하세요 좋은 강의 항상 잘 보고 있습니다. 다름이 아니라 8분 경 RequestMappingHandlerMapping은 스프링 빈 중에서 @RequestMapping 또는 @Controller가 클래스 레벨에 붙어 있는 경우 매핑 정보로 인식한다 하였는데, 스프링 6 버전 이후부터는 @RequestMapping은 인식하지 않게 변경된 것 같아 말씀 드립니다. 관련 커밋 링크 참조합니다! https://github.com/spring-projects/spring-framework/commit/3600644ed1776dce35c4a42d74799a90b90e359e 감사합니다.

  • spring
  • MVC
신동훈 댓글 3 좋아요 2 조회수 1043

문제가 발생 할 수 있는 이유가 이해가 되지 않습니다.

해결됨

실전! 스프링 부트와 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. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.

  • JPA
  • spring-boot
  • spring
  • java
  • 웹앱
황상익 댓글 1 좋아요 0 조회수 2065

수업질문

미해결

스프링 핵심 원리 - 기본편

의존관계 자동주입에서 질문있습니다. (영상시간 18분 16초) @Autowired를 통해 의존관계 주입에서 자료타입에 따라 설정된다고 하였는데, DiscountPolicy 자료타입에서 rateDicountPolicy가 @Component 설정이 되어있어서 rateDicountPolicy 만 의존관계 자동주입설정된건가요? @Component 유무에 따라서 자료타입지정이 가능하면 자료타입 중(FixDiscountPolicy,RateDiscountPolicy) 하나만 설정으로 해야겠네요?? 여러개를 설정하면 충돌에러가 뜨나요?

  • spring
  • oop
로드 존슨 댓글 1 좋아요 3 조회수 605

afterCompletion 에서의 에러 로깅

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

안녕하세요, afterCompletion() 에서 에러 로깅과 관련해서 질문드립니다. 현재 강의에서는 컨트롤러에서 예외가 터지면 afterCompletion() 의 파라미터 ex 가 널이 아니니까 이 ex 를 통해 어떤 에러가 났는지 로깅을 해주고 있습니다. 그렇다면 만약 @ExceptionnHandler 를 이용해 컨트롤러의 예외처리를 한다면 이 ex 는 별도로 사용하지 않아도 될까요?(거의 사용을 안 하게 될 것 같은데, 맞나요?) 항상 영한님과 서포터님들께 감사드립니다!🙇‍♂️

  • spring
  • MVC
andthensome 댓글 1 좋아요 0 조회수 5015

@Component로 등록한 빈을 조회하는 방법은 어떤게 있나요?

미해결

스프링 핵심 원리 - 기본편

@Component로 등록한 빈을 조회하는 방법은 어떤게 있나요? 궁금합니다. 아래와 같은 코드가 아니라 다른 클래스를 이용해야 하나요? AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class );

  • spring
  • oop
YOGURT 댓글 1 좋아요 0 조회수 469

왜 addStock, removeStock 메서드를 사용하는 것이 왜 객체지향적인지

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

강의에서 setter 메소드로 재고 수량을 조절하는게 아니라 addStock 메서드, removeStock 메서드를 이용해 재고 수량을 조절하는 것이 객체지향적이라고 하셨는데 왜 이게 객체지향적인지, setter 메소드를 사용하는 것이 왜 객체지향과는 거리가 있는 것인지 자세하게 설명 부탁드립니다. 감사합니다

  • 웹앱
  • java
  • JPA
  • spring
  • spring-boot
kmj9247 댓글 1 좋아요 1 조회수 880

Entity 내의 로직들, 생성 함수에 대한 질문

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요! 간단한 질문이 있어서 살짝 남겨보게 되었습니다. 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들이 자연스럽게 호출되게 하는 방식인 느낌인데 이런 방향이 맞을까요?

  • spring-boot
  • java
  • JPA
  • spring
  • 웹앱
강우석 댓글 1 좋아요 0 조회수 1521

@PersistenceContext 에 대하여

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요 강의 중 @PersistenceContext 에 대해 궁금한 점이 생겨서 질문을 남기게 되었습니다. JPA 기본편 강의도 완강 후에 듣고 있는 상태인데요, 제가 이해했었던 바는, 한 영속성 컨텍스트에는 한 EntityManagerFactory 가 할당되고, 그 영컨에서 진행하는 각각의 트랜젝션들을 처리하기 위해 EMF가 각각 EntityManager를 생성하여 트랜젝션마다 할당해서 처리할 수 있도록 도와준다고 이해하였습니다. 위에 이해한 바가 맞다면, 앱이 실행되면서 MemberRepository 가 싱글톤 컨테이너에 의해 관리되기 시작하면서, 이 때는 EntityManager 가 트랜젝션이 들어오지 않았기 때문에 할당받지 못한 상태여야 할 것 같습니다. 그리고 save, findOne, findAll 등의 트랜젝션을 수행하기 위한 함수들이 호출될 시 EntityManager 가 생성되고 할당받는 것이 맞을까요? 즉, 싱글톤 컨테이너 안에 있는 Repository 안에 있는 EntityManager em 은 트랜젝션이 수행되기 전에는 NULL이라고 보면 될까요? 제가 이해한 내용이 맞는지 궁금해서 문의글 남기게 되었습니다. 항상 도움주셔서 감사합니다 :]

  • spring-boot
  • java
  • 웹앱
  • spring
  • JPA
강우석 댓글 1 좋아요 2 조회수 2259

redirect RestController

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

안녕하세요. redirect를 써서 새로고침 시에 중복 방지하는 것까지는 이해를 했습니다. 그런데 만약에, restcontroller일 경우 즉 값만 받아서 저장하고 값만 돌려주는 경우에는 따로 redirect 처리하지 않아도 되는 거죠? 예를들면 javascript로 ajax를 사용해서 값을 보내고 저장(또는 삭제, 수정) 하는 경우일 때가 궁금한것입니다!

  • MVC
  • spring
goodlucky1215 댓글 1 좋아요 1 조회수 858

./gradlew clean build 오류

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 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도 지워보고 해봣는데 안됩니다

  • 웹앱
  • spring-boot
  • JPA
  • java
  • spring
댓글 1 좋아요 0 조회수 1076

findAllBean()에서@Autowired질문입니다.

해결됨

스프링 핵심 원리 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기서 ac를 통해 DiscountService를 빈을 등록했는데 @Autowired 어노테이션 사용시 에러나는 원인을 모르겠습니다.

  • oop
  • spring
javabase 댓글 4 좋아요 3 조회수 1647

mvc2편까지 봤는데 쭉 나가도 될까요 선생님?

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

현재 스프링 기본 -HTTP- mvc1편-mvc2편 까지 본 상태입니다 또한 스프링부트+jpa 로드맵도 다 구매를 해둔 상태이구요 병렬적으로 자바 / cs / 이론적인 데이터베이스 공부도 함께하고 있구요 다만 스타일이 한번 빠르게 쭉 보고 모르는게 있으면 체크 해둔 후 진도를 나갈수록 계속 쓰이는데, 제가 반복적으로 헷갈리는 부분은 따로 적어두고 체크해두면서 1회독 후 2회독 3회독을 하는 스타일 입니다 다만 스프링 기본~ mvc2편 까지 공부한 상태에서 한 번 더 보려고 하니 생각보다 시간이 많이 소요될 것 같다는 것을 느꼈습니다 그래서 mvc2까지 본 현재 상황에서 나머지 스프링 로드맵들 db관련 내용(db1,2)+ jpa+스프링부트까지 빠르게 쭉 다 보고 다시 처음 스프링부터 보는게 나을지, 아니면 다시 스프링 기본부터 복습하고 db및 jpa+스프링부트쪽 뒷 로드맵으로 넘어가는게 나을지 고민입니다! 항상 양질의 강의 감사드립니다 영한님 및 서포터즈 분들 새해복 많이 받으세요!

  • spring
댓글 1 좋아요 0 조회수 433

input tag에 타임리프로 chekced를 넣는 방법

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

[질문 내용] 안녕하세요 강사님! 강의 잘 듣고 있습니다. 다름이 아니라 타임리프에서 chekced를 표기하는 방법을 알고 싶습니다! html 소스보기 사진 <div class="form-check form-check-inline"> <input type="radio" value="ETC" class="form-check-input" id="itemType3" name="itemType" /> <label for="itemType3" class="form-check-label" checked="checked" >기타</label> </div> 소스코드 <!-- radio button --> <div> <div>상품 종류</div> <div th:each="type : ${itemTypes}" class="form-check form-check-inline"> <input type="radio" th:field="*{itemType}" th:value="${type.name()}" class="form-check-input" th:checked="${(type.description == '기타')? 'true':'false'}" /> <label th:for="${#ids.prev('itemType')}" th:text="${type.description}" class="form-check-label" th:checked="${(type.description == '기타')? 'true':'false'}" > BOOK </label> </div> </div> 위처럼 표시했는데 label 태그에는 나오고 input태그에는 나오지가 않습니다 ㅠ 이유가 무엇일까요? 또 thymeleaf로 표기하려면 어떻게 해야할까요? 그리고 formController에서 초기값을 설정하는 방법은 직접 해봤습니다! 타임리프에서 조건을 줘서 checked를 주는 방식이 궁금합니다! 감사합니다 ㅎㅎ

  • tyhmeleaf
  • checcked
  • MVC
  • input
  • spring
  • html
yj Ryu 댓글 1 좋아요 0 조회수 2091

process(paramMap,model) 질문

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

String viewName= controller.process(paramMap,model) 을 하게 되면 무슨 값이 들어가게 되나요? paramMap과 model 자체가 map 형태인데 어떻게 string 으로 치환이 되는건지 궁금합니다. process 메서드를 제가 잘 이해를 못한건지 이해가 잘 되지않습니다.

  • MVC
  • spring
ㅇㅇㅇㅇㅇㅇ 댓글 2 좋아요 0 조회수 449

임베디드 모드에서 Spring이 database를 선택하는 과정

미해결

스프링 DB 2편 - 데이터 접근 활용 기술

Spring 공식 문서를 보면 Spring Boot can auto-configure embedded H2 , HSQL , and Derby databases. You need not provide any connection URLs. You need only include a build dependency to the embedded database that you want to use. You need a dependency on spring-jdbc for an embedded database to be auto-configured . In this example, it is pulled in transitively through spring-boot-starter-data-jpa . 라고 나와있습니다. 저는 현재 프로젝트의 경우 build dependency = build.gradle dependency on spring-jdbc = implementation 'org.springframework.boot:spring-boot-starter-jdbc' (build.gradle) 라고 생각하는데, 이것이 맞는 내용인지 궁금합니다.

  • spring
지평선 댓글 1 좋아요 0 조회수 768

다양한 의존관계 주입 방법 강의 7분 42초 질문입니다.

해결됨

스프링 핵심 원리 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. basicScan 메소드로 테스트 시 sout을 해도 sout이 출력이 되지 않아 질문드립니다. 어떤 부분을 확인해봐야 할까요?

  • spring
  • oop
javabase 댓글 2 좋아요 0 조회수 669

스프링 컨테이너가 2개가 가능한가요?

미해결

스프링 핵심 원리 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 프로토타입 빈 요청 시 스프링컨테이너가 새로 생성된다 했는데 그럼 2번 요청하면 스프링컨테이너가 2개 생성되나요?

  • 스프링컨테이너
  • oop
  • 프로토타입
  • spring
댓글 1 좋아요 0 조회수 600

mv.getModel().put("member",member);

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

이 부분에서 ModelView mv = new ModelView("save-result") mv.getModel().put("member",member); 이렇게 하면 결과가 어떻게 되는 건가요? mv.setModel().put("member",member); 을 해야 맞는거 같은데 잘 이해가 안되서 질문 드립니다.

  • MVC
  • spring
ㅇㅇㅇㅇㅇㅇ 댓글 1 좋아요 0 조회수 753

인기 태그

인프런 TOP Writers

주간 인기글