묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
mybatis적용2테스트시 오류발생
https://drive.google.com/file/d/1rDjuTFQjZZOER9yTzPuAWsmouu9D_p26/view?usp=sharing미치겠네요. 그대로 따라했는데 왜오류일까요
-
미해결스프링 핵심 원리 - 고급편
CallServiceV1
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]강의와 자바 버전이 다르긴 합니다. 자바 버전이 다른 이슈로 다른 정상 작동 되는 테스트에서도 아래 경고가 발생하긴합니다.WARNING: A Java agent has been loaded dynamically (/Users/yunsang-won/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy-agent/1.14.17/e3c251a39dc90badaf71c83427ba46840f219d8d/byte-buddy-agent-1.14.17.jar)WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warningWARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more informationWARNING: Dynamic loading of agents will be disallowed by default in a future releaseCallserviceV1 생성 후 테스트 코드 실행해보면 아래와 같은 에러가 발생합니다 뭐가 문제일까요 ?ApplicationContext failure threshold (1) exceeded: skipping repeated attempt to load context for [MergedContextConfiguration@6fc29daa testClass = hello.aop.internalcall.CallService0Test, locations = [], classes = [hello.aop.AopApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@65a15628, [ImportsContextCustomizer@2f66f0d0 key = [hello.aop.internalcall.CallService0]], org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@7d1cfb8b, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@39655d3e, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@6138e79a, org.springframework.boot.test.context.SpringBootTestAnnotation@373420a5], contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null]
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드 오류
이런 화면만 뜨고 빌드가 안돼요. 어떻게 해결해야할까요?? 도와주세요ㅜ
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
spring security 이후 Spring MVC06
80강 이후 업데이트나 사진 등록 부분이랑 업데이트하는 부분의 강의는 없는 거 같아서요 그냥 내용 들은 거랑 깃허브 비교해서 코드수정하면 되나요??
-
미해결스프링 핵심 원리 - 기본편
7분29초 단일책임원칙
7분29초에 말씀하신게 단일책임원칙을 지킨게 아니라개방 폐쇄 원칙을 지킨게 맞지않나요?단일책임원칙도 지킨건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링jpa 작업 중 오류
작업파일 링크 드라이브에 담아 공유합니다. 어느 점에서 오류가 나는지 잡을 수 없어 질문드립니다. 감사합니다https://drive.google.com/file/d/1UqI2_8bN8k4yq1Zww3OVkDLQ_yS_tsPS/view?usp=drive_link
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
컨트롤러 패키지명
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]컨트롤러를 두는 패키지명을 controller가 아닌 web으로 하신 이유가 궁금합니다
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
No message found under code 'totalPriceMin' for locale 'ko_KR'. 오류
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]'오브젝트 오류' 강의 3:53 경에 '필드가 아닌 복합 룰 검증' 관련 코드들을 복붙한 후 실행한 결과 아래 사진과 같이 Caused by: org.springframework.context.NoSuchMessageException: No message found under code 'totalPriceMin' for locale 'ko_KR'.라는 오류가 출력됩니다.몇시간동안 관련 내용들을 구글링해도 해결되지 않아 문의드립니다. 답변 부탁드립니다.아래 링크는 압축파일입니다.https://drive.google.com/file/d/1BvnXi4zMz54nFj2op-MlvGw8czjP7DAB/view?usp=sharing
-
해결됨토비의 스프링 6 - 이해와 원리
기술에 의존적이라는 것에 대해서 조금 질문드립니다.
spring data jpa를 사용하면, JpaRepository 를 상속한 인터페이스를 보통 정의하게 되잖아요? 이 경우에도 특정 기술에 의존한다고 볼 수 있는건가요? 이런 경우, 실질적으로 spring data jpa 와 관련된 import 구문이 들어오기는 하지만, 구현체의 내용이 없기 때문에 코드 변경에 따른 여파가 없다고 느껴지긴 하거든요. 만들면서 배우는 클린 아키텍처라는 책에는 이를 persistence layer 로 분류하고 있더라구요. 이 인터페이스는 어떤 레이어에 속한다고 보시나요?질문을 드린 이유는 실제 헥사고날 아키텍처나 이런 것들을 다루는 곳에서 보면, 비즈니스 레이어에 인터페이스를 선언하고 이를 상속하는 인터페이스를 구현하는 경우들이 있는데, 실제 구현내용이 없는데 persistence layer 라고 봐야하나? 라는 생각이 문득 들었습니다. 예시:// business layer 에 선언interface BusinessRepository {}// persistence layer에 선언interface DataAccessRepository: JpaRepsitory<생략>, BusinessRepository
-
해결됨토비의 스프링 6 - 이해와 원리
클래스 필드 레벨에서의 객체 생성에 대해 질문있습니다.
안녕하세요. 좋은 강의 감사합니다.기존에는 PaymentService 클래스의 prepare 메서드 내부에서 provider 객체를 생성했었습니다.강의 중간에 토비님께서 provider를 클래스 필드로 변경하시고, 생성자에서 객체 생성을 하셨습니다.변경 이후에 Provider는 PaymentService와 생명주기를 함께합니다.(생명주기라는 단어가 올바른지 모르겠네요.) PaymentSerivce가 메모리 해제되지 않으면, Provider도 계속 메모리를 차지하게 됩니다.하지만 메서드 레벨에서 객체 생성을 한다면, Provider는 GC에 의해 비교적 일찍 메모리 해제가 될 수 있을 것 같습니다. 제 생각에는 클래스와 메서드의 호출 패턴에 따라서 선택이 달라질 것 같은데,토비님께서는 클래스 필드 레벨 선언과 메서드 레벨 선언을 정하시는 룰이 있으신지 궁금합니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
http://www.thymeleaf.org 가 실행이 안되는 것 같아요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]gradle에도 있고build.gradle에도 있는데hello.html을 실행하면 저렇게 에러 페이지가 뜹니다.
-
해결됨토비의 스프링 6 - 이해와 원리
의존성 방향과 관련된 질문이 있습니다.
안녕하세요 토비님.OrderRepository 인터페이스가 application layer에 있고,이걸 구현한 구현체가 persistence layer에 있는데요. 일반적인 layered 아키텍처라고 하면, 의존성의 방향이 아래로 향해야하는데, 이 경우라면 의존성이 application 으로 향하게 되는거 같은데요. 만약에 이런식으로 구성한다면 port & adapter 같은 개념을 별도로 두지 않더라도, 의존성방향에 의하면 헥사고날 (혹은 클린 아키텍처) 라고 부를 수 있는건가요? 아니면 그럼에도 layered 아키텍처라고 부르나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
회원가입 PRG
@GetMapping("/join") public String addMemberForm(@ModelAttribute("form") MemberSaveForm form) { return "members/join"; } @PostMapping("/join") public String join(@Valid @ModelAttribute("form") MemberSaveForm form, BindingResult bindingResult, RedirectAttributes redirectAttributes) { //복합 룰 검증 validateObjectError(form, bindingResult); if (bindingResult.hasErrors()) { return "members/join"; } //회원가입 Long memberId = memberService.join(form); redirectAttributes.addFlashAttribute("memberId", memberId); return "redirect:/members/join/complete"; } @GetMapping("/join/complete") public String joinComplete(@ModelAttribute(name = "memberId") Long memberId, Model model) { NewMemberInfo newMemberInfo = memberService.getNewMemberInfo(memberId); model.addAttribute("member", newMemberInfo); return "members/join_complete"; }안녕하세요. 회원가입 완료페이지(/join/complete)에서 뒤로가기로 다시 회원가입하는 페이지(/join)로 이동했을 때 필드의 값(MemberSaveForm)들이 유지되는데 값들을 없애려면 어떻게 해야하나요?POST /join 에서 리다이렉션으로 /join/complete로 이동할때 memberId를 addFlashAttribute가 아닌 세션을이용하려하는데 흔히 사용하는 방식인지 궁금합니다. 다른 좋은 방법이 있나요?
-
해결됨스프링 핵심 원리 - 기본편
섹션7. 옵션처리
영상 6분 30초쯤에 TestBean을 스프링 빈으로 등록 된다고 하셨는데, 어노테이션 없이도 빈으로 등록되나요? 그리고 @Component이 추가 된거랑 같은지 궁금합니다. 감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
DTO의 사용 범위와 Controller에서 엔티티 생성 가능 여부
안녕하세요.해당 강의를 수강하다 궁금증이 생겨 질문 드립니다.강의에서는MemberService 같은 경우에@Transactional public Long join(Member member) { validateDuplicateMember(member); // 중복 회원 검증 memberRepository.save(member); return member.getId(); }이런식으로 엔터티를 파라미터로 받고,MemberApiController 같은 경우에는@PostMapping("/api/v2/members") public CreateMemberResponse saveMemberV2(@RequestBody @Valid CreateMemberRequest request) { Member member = new Member(); member.setName(request.getName()); Long id = memberService.join(member); return new CreateMemberResponse(id); }별도의 DTO를 파라미터로 받아 member 엔티티 객체를 생성하여 set 해주는 식으로 진행하였는데,(set 말고 생성메소드를 이용해야하는건 알아요!) 1. 엔티티를 외부에 노출하면 안되고, API 스펙이 바뀌어도 문제가 생기지 않기 위해 Controller단에 파라미터 및 반환값에 DTO를 사용하는 것은 당연하다. 그렇다면 서비스나 리포지토리에서는 파라미터로 엔티티를 받아야 하나요? DTO를 받아야 하나요??2. 만약 DTO를 Controller에서만 받고, Service단에서 파라미터로 엔티티를 받는다면, Controller 단에서 엔티티 객체를 생성하여 Dto의 정보를 넣어준 뒤 Service단으로 보내줘야하는데, Controller단에서 엔티티를 생성하는 것이 괜찮은 방법인가요? 어떤게 더 좋은 방법이고, 실무에서 더 많이 쓰는 방법인지, 어떤 장단이 있는지도 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
ComponentScan시 @Configuration
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]수동으로 빈을 등록할 때 AppConfig 클래스에 붙은 @Configuration이 빈의 싱글톤을 보장한다면, 컴포넌트 스캔으로 빈을 등록할 때 AutoAppConfig에 붙은 @Configuration은 AutoApppConfig 클래스를 스캔 범위로 포함시키는 것 외에 무슨 역할을 하나요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
예외 처리 부분에 대해서 질문드립니다
안녕하세요. 좋은 강의 잘 듣고 있습니다.다름이 아니라 예외처리에 대해서 질문드립니다.MemberService2 코드를 보면 예외를 처리하는 부분에 있어서 ,try~catch로 예외를 처리하는데 catch에는 단순히 로그만 찍거나 try~catch로 예외를 처리하는데 catch에서 throw로 예외를 발생시키고,어떤부분은 단순히 throws로 예외를 넘기는데, 어떤기준에 의해서 이렇게 하셨는지 궁금합니다.. 혹시 강의 뒤편에 있는 예외처리부분을 학습하면 해결이 되는 부분일까요..? 트랜잭션에 관련된 부분은 이해가 되었는데 이 부분이 애매해서 질문드립니다.
-
해결됨토비의 스프링 부트 - 이해와 원리
DeferredImportSelector와 Condition
안녕하세요.조건부 자동구성 강의를 보면서 Spring은 사용자가 직접 구성한 Configuration클래스가 전부 로딩이 되고난 후, 자동 구성정보가 적용되도록 만들기 위해 DeferredImportSelector를 구현한다고 이해했습니다.근데 강의 초반의 흐름을 생각해보니, Spring이 초기화되는 타이밍에 ServletContainer에 dispatcher가 등록되면서 시작하고 그다음에 메인클래스가 register되고 이때 메인은 ComponentScan을 메타로 달고있기에 이 시점에 컴포넌트들이 읽히면서 등록되는구나 싶엇는데.. 이 부분이 헷갈리네요.분명 위의 흐름대로라면 자동 구성영역이 먼저 등록됐기 때문에 Tomcat도 getBean할 수 있었을텐데..spring은 미리 뭐 클래스영역에 있는 메타정보로 자동구성을 대체할 수 있는 빈이 있는지를 먼저 볼수있고 지나칠수있는.. 그런걸까요..? 궁금합니다
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
controller가 널일수도 있으니까 Optional로 감쌀 수는 없나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.ifPresentOrElse()같은 걸 사용할 수는 없는지 여쭤봅니다.
-
미해결스프링 핵심 원리 - 기본편
다형성, OCP, DIP의 차이점
[질문 내용]다형성 : 하나의 타입으로 여러개의 객체를 다룰 수 있는 것OCP : 변경에는 닫혀있고, 확장엔 열려있는것 따라서 클라이언트 기존의 코드는 변경하지 않고 확장을 통해 기능을 추가하고 변경할 수 있다DIP : 클라이언트와 구현체는 추상화에 의존해야된다는 것 따라서 클라이언트가 구현 객체에 의존하는 것이 아닌 클라이언트와 구현객체 사이에 인터페이스를 두고 클라이언트와 구현객체가 인터페이스에 의존하여 구현객체를 변경해도 클라이언트에 영향이 없음을 의미한다전 아무리 생각해도 다형성, OCP, DIP 이 세가지가 결국엔 추상화에 의존해서 클라이언트의 코드 변경없이 기능을 확장시킨다를 의미하고 있고, 다형성, OCP, DIP 이 세가지가 말만다르지 다 똑같아 보이는데 ,,명확한 차이점이 있을까요? 그리고 예를들어 OCP를 위반해도 DIP는 지켜지는 그런 상황도 있을까요?