묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2 실행 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 네[질문 내용]여기에 질문 내용을 남겨주세요.지금 h2설치하기 강의를 보고 따라하는데 설치까지는 잘 되었지만 실행에서 막혔습니다.h2.bat을 해도 아무반응없이 3초간 로딩되다가 끝나고 다른 곳에서는 "h2.bat"을 해보라고도 해서 해도 안되고 springboot에 맞게 2.xx최신버전을 깔아도 작동이 안되네요. 환경변수의 문제도 아닌거 같고 java -version을 치면 아무것도 안뜨지만 where java를 작성하면 위치는 나와서 java도 깔려있긴 한데 뭐가 문제인지 모르겠네요.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
hibernate5JakartaModule 의 이상한 결과에 대해 질문있습니다.
안녕하세요. 강의를 따라@JsonIgnore와 hibernate5JakartaModule 도 빈등록을 진행했습니다.아래 POSTMAN결과를 보면 첫 주문은 연관된 필드( orderItems)가 null로 잘 출력되는 것을 확인할 수 있었습니다. 비록 지금은 null로 출력됐지만 강제지연로딩을 설정하면 주문상품 요소들이 추가로 보여집니다.반면, 두 번째 주문은 주문상품들이 다 보여지고 있습니다.첫 번째 주문처럼 결과가 보여줘야할 것 같은데 말이죠.hibernate5JakartaModule 은 결과를 보장할 수 없는 것인지 궁금합니다.[ { "id": 1, "member": null, "orderItems": null, "delivery": null, "orderDate": "2025-02-21T07:23:38.479148", "status": "ORDER", "totalPrice": 50000 }, { "id": 2, "member": null, "orderItems": [ { "id": 3, "item": null, "orderPrice": 20000, "count": 3, "totalPrice": 60000 }, { "id": 4, "item": null, "orderPrice": 40000, "count": 4, "totalPrice": 160000 } ], "delivery": null, "orderDate": "2025-02-21T07:23:38.663151", "status": "ORDER", "totalPrice": 220000 } ]
-
미해결스프링 핵심 원리 - 기본편
"롬복과 최신 트랜드" 강의를 듣고 생각난 질문입니다~
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. "롬복과 최신 트랜드" 강의를 듣고 생각난 질문입니다~ 해당 강의에서 lombok 라이브러리를 사용하기 위해 build.gradle에 의존성을 추가하고, 추가로 플러그인에서 다운까지 받아서 진행해봤는데요. 1) 라이브러리와 플러그인의 차이점을 어떻게 생각하면 될까요?2) 그리고 어떤 라이브러리들은 그냥 build.gradle에 의존성 추가만 해주면 되는 것 같았는데, lombok 라이브러리와 같이 플러그인을 추가로 다운받아야 하는 기준이 있는걸까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
test코드 작성 후 실행이 안되요 ㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 무료버전으로 인텔리j사용중입니다. build and run using, run test using을 gradle로 설정하면 서버가 실행되서 그렇게 변경 후에 사용했었는데요. 테스트 코드 작성후에는 run을 시켜도 아래 에러 출력 후 서버가 실행되지 않아요.어떤걸 수정해야하는지 ㅈ찾아봐도 잘 모르겠습니다.. 도와주세요 ㅠ > Task :compileJava UP-TO-DATE> Task :processResources UP-TO-DATE> Task :classes UP-TO-DATE> Task :compileTestJava UP-TO-DATE> Task :processTestResources NO-SOURCE> Task :testClasses UP-TO-DATE> Task :testBUILD SUCCESSFUL in 1s4 actionable tasks: 1 executed, 3 up-to-datePM 11:09:35: Execution finished ':test --tests "hello.servlet.domain.member.MemberRepositoryTest.save"'.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
공부와 복습을 어떻게 해야 좋을까요?
========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용]영한님의 강의를 듣고 있는 학생입니다. 잘 모르는 분야라 무작정 진도만 나가 자니 그냥 타이핑만 따라 치는 느낌을 자주 받습니다. 특히 자바가 아닌 스프링에 들어와선 이 느낌이 더 강하게 드는데요. 스프링의 개념적인 설명들이 막연하게 느껴지거나 이해가 되는 듯 해도 그래서 이걸 지금 쓸 수 있나? 응용할 수 있나? 생각하면 자신이 없습니다. 물론 아직 낮은 단계(자바 중급2편 스프링 MVC1편)의 강의를 듣고 있어서 그럴 수도 있겠지만, 시간을 들이는 것에 비해 비효율적으로 공부하고 있나? 하는 불안감을 종종 느낍니다. 그래서 어떤 식으로 공부를 하는 게 좋을지 그리고 복습을 어느 타이밍에 어떤식으로 하는게 좋을지 조언을 구하고 싶습니다. 복습의 경우에도 안 그래도 휘발성이 강한 지식 복습을 안 하니 다음 진도 나갈 때 앞에서 배운 개념들로 발목을 자주 잡히는 느낌을 자주 받았습니다.그래서 최근에는 그냥 버스 안에서, 밥먹으면서 유튜브 보듯이 옆에 틀어 놓고 보고 있습니다. 개념 생각 안 날 때 그 파트만 다시 틀고 당장 한 두번 저렇게 진행해도 머리에 안 들어오면 좀 더 집중적으로 반복해서 듣고 있는데 복습을 이런 식으로 보기만 해도 괜찮을지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
채번 쿼리 로그
안녕하세요.아래 강의 소스의 내용중 memberService.join메소드를 호출시 em.persist로 인해 select next value 시퀀스값을 가져오는 쿼리를 기대했습니다.@SpringBootTest(classes = JpashopApplication.class) @Transactional public class MemberServiceTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Autowired EntityManager em; @Test @Rollback(value = false) public void 회원가입() throws Exception { System.out.println("MemberServiceTest.회원가입"); //given Member member = new Member(); member.setName("kim"); //when Long savedId = memberService.join(member); //then assertThat(memberRepository.findOne(savedId)).isEqualTo(member); } 하지만, 아래 소스 InitDb의 init메소드의 제거 여부에 따라위 시퀀스 채번쿼리가 나타났다 사라졌다 합니다.@Component @RequiredArgsConstructor public class InitDb { private final InitService initService; @PostConstruct public void init() { initService.dbInit1(); initService.dbInit2(); } .... }다른 분들 도 같은 현상을 겪는지 궁금하며 원인을 알고싶습니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
도메인과 전달 객체 분리에 대한 이유 (API vs MVC)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]API 개발에서 도메인(Entity) / 전달 객체 (DTO)를 분리하는 이유는 Entity에 변경점이 있더라도 클라이언트가 알지 못하게 하기 위함이라고 배웠습니다 MVC에서는 그런 이유보단 기능 별로 검증을 구분하기 위해서 도메인과 전달 객체(form)를 분리한다고 이해하면 될까요? API 개발일 떄랑 단순 웹 개발일때랑 도메인 / 전달 객체 분리하는 이유가 달라지는건가요?
-
미해결스프링 핵심 원리 - 기본편
@Score("singleton") 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]빈 스코프는 빈이 존재할 수 있는 범위라고 이해했습니다.즉, @Scope("singleton")은 빈이 스프링 컨테이너의 시작과 종료까지 유지됨 @Score("singleton")static class SingletonBean{ ... }위의 코드를 보면 @Configuration이 없으니 -> 빈을 싱글톤으로는 관리하지 않는다. -> 의존관계를 주입할때 new() 호출될 때마다 새로운 객체가 생성됨그럼 위 상황에서는 빈이 싱글톤이 아니여서 여러 개의 객체가 생성되었고 이 객체들은 컨테이너의 시작과 종료까지 유지된다 라고 이해하면 될까요??감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
컬렉션 필드에 대한 하이버네이트의 추적
안녕하세요.강의 13:00에서@OneToMany 컬렉션 필드를 하이버네이트가 변경사항을 추적한다는 말씀을 하셨습니다. 연관관계의 주인이 아닌 거울이기 때문에 컬렉션에 요소를 추가/제거 하더라도 테이블에 영향을 주지 않는데요. 즉 더티체킹을 하지 않는 것으로 이해했기 때문에 하이버네이트가 추적을 한다는 말씀이 잘 와닫지 않습니다. 제가 잘못이해한 것이 있는지 궁금합니다~!
-
미해결스프링 핵심 원리 - 기본편
"@Autowired 필드명"과 "@Primary" 우선순위
문득 @Autowired 필드명 과 @Primary 의 우선순위가 궁금해서 아래와 같은 테스트를 진행해봤습니다. OrderServiceImpl 클래스의 생성자 파라미터 중에서 DiscountPolicy 타입의 변수명을 fixDiscountPolicy 로 변경하고RateDiscountPolicy 클래스에 @Primary 를 주고 테스트를 돌려봤습니다.@Test void test2() { // 강의에서 사용하던 AutoAppConfig.class ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class); OrderServiceImpl orderService = ac.getBean(OrderServiceImpl.class); // OrderServiceImpl 클래스에 getDiscountPolicy 따로 정의 assertThat(orderService.getDiscountPolicy()).isInstanceOf(RateDiscountPolicy.class); } 위 테스트의 결과는 통과하였습니다.즉, @Primary 가 @Autowired 필드명 보다 우선순위가 높다는 얘기인데 몇가지 궁금한 점이 있습니다.제가 궁금한 내용을 확인하기 위해서 위처럼 테스트를 하는 것이 맞나요?(여기서 OrderServiceImpl 클래스의 멤버변수인 discountPolicy 변수명은 안 건드려도 되죠?)테스트가 통과하는 게 맞는 결과인가요?이와 같은 흐름으로 이해하는 게 맞나요?1) 생성자 주입이 이루어질 때 DiscountPolicy 타입으로 등록된 빈 2개 발견2) @Primary 가 있는 RateDiscountPolicy 타입의 빈이 주입3) 만약 @Primary 가 없었다면 @Autowired 필드명 에 의해 FixDiscountPolicy 타입의 빈이 등록 됨그럼 @Qualifier , @Primary , @Autowired 필드명 순서로 우선순위가 높은 게 맞죠?위 내용과는 별개의 질문인데요 특정 클래스에 @Primary 를 붙여주면 해당 클래스의 인스턴스가 빈으로 등록될 때 BeanDefinition 에 @Primary 관련된 정보도 같이 들어가는건가요?
-
미해결스프링 부트 - 핵심 원리와 활용
실행하면 오류가 나면서 종료됩니다.
19-Feb-2025 22:14:57.625 SEVERE [main] org.apache.catalina.startup.HostConfig.deployDescriptor 배치 descriptor [C:\Users\cksgh\.SmartTomcat\server\server\conf\Catalina\localhost\ROOT.xml]을(를) 배치하는 중 오류 발생 java.lang.IllegalStateException: 자식 컨테이너를 시작하는 중 오류 발생 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:602) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:571) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:654) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:635) at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1889) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:123) at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:530) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:421) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1629) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:303) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:109) at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389) at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:336) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:776) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:772) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1203) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1193) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:749) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:203) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:415) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:870) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.startup.Catalina.start(Catalina.java:761) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473) Caused by: org.apache.catalina.LifecycleException: 구성요소 [org.apache.catalina.webresources.StandardRoot@77659b30]을(를) 시작하지 못했습니다. at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:406) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:179) at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4121) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4243) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:599) ... 37 more Caused by: java.lang.IllegalArgumentException: The main resource set specified [C:\Users\cksgh\Desktop\공부자료\스프링 강의자료\스프링부트 핵심원리와 활용\boot-source-20230228\start\server\build\exploded] is not a directory or war file, or is not readable (it does not exist or permissions to access it are missing) at org.apache.catalina.webresources.StandardRoot.createMainResourceSet(StandardRoot.java:749) at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:707) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) ... 41 more19-Feb-2025 22:14:57.636 INFO [main] org.apache.catalina.startup.HostConfig.deployDescriptor 배치 descriptor [C:\Users\cksgh\.SmartTomcat\server\server\conf\Catalina\localhost\ROOT.xml]의 배치가 [114] 밀리초 내에 완료되었습니다.19-Feb-2025 22:14:57.644 INFO [main] org.apache.coyote.AbstractProtocol.start 프로토콜 핸들러 ["http-nio-8090"]을(를) 시작합니다.19-Feb-2025 22:14:57.937 INFO [main] org.apache.catalina.startup.Catalina.start 서버가 [488] 밀리초 내에 시작되었습니다.http://localhost:8090/19-Feb-2025 22:18:24.376 INFO [Thread-1] org.apache.coyote.AbstractProtocol.pause 프로토콜 핸들러 ["http-nio-8090"]을(를) 일시 정지 중19-Feb-2025 22:18:25.117 INFO [Thread-1] org.apache.catalina.core.StandardService.stopInternal 서비스 [Catalina]을(를) 중지시킵니다.19-Feb-2025 22:18:25.120 INFO [Thread-1] org.apache.coyote.AbstractProtocol.stop 프로토콜 핸들러 ["http-nio-8090"]을(를) 중지시킵니다.19-Feb-2025 22:18:25.127 INFO [Thread-1] org.apache.coyote.AbstractProtocol.destroy 프로토콜 핸들러 ["http-nio-8090"]을(를) 소멸시킵니다.Process finished with exit code 130
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
이거 문제가 될까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]정상적인건가 했는데 영상의 선생님을 보니 아닌것같아서 질문드립니다.프로젝트 실행후 종료하면 아래 사진과 같이 에러같은 문구가 뜹니다. 프로젝트도 정상적으로 빌드되고 따라하는데 문제도 없으니 문제 없는건가 싶었는데 영상의 선생님을 보니 선생님은 프로젝트를 종료하실때 이런 화면이 안뜨는 것같아 뭔가 잘못된건가 싶습니다.그러다가 아래사진의 Settings -> Build Tools -> Gradle 에서Build and rung using 과 Run tests using을Gradle -> 에서 IntelliJ로 변경 후 빌드 하고 종료하니 아무런 문구가 뜨지 않습니다. 해당 설명은 프로젝트 생성 영상에서 언급하셨던 것으로 생각하는데 그때는 속도차이정도로 밖에 설명을 안하셔서 저는 그냥 딱히 인텔리제이 옵션으로 변경하지 않고 Gradle로 그대로 했었습니다. 그런데 이번에 프로젝트를 실행하고 종료하고 하다보니 오류문구같은 차이가 있다보니 혹시 추후에 문제가 있을까 싶어 질문드려요. 어떠한 차이점일까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
다대다 관계 1:N, N:1 로 풀기
1. 강의 내용과 관련된 질문인가요? (예/아니오)네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네[질문 내용]왜 주문과 상품은 1:N, N:1로 풀고, 카테고리와 상품은 풀지 않은 건가요? 둘 다 다대다 관계인데 어떤 의미가 있나요?
-
해결됨대기업 근무하며 경험한 Redis를 야무지게 사용하는 방법 [실습]
질문있습니다
RedisConfig 클래스에서 @Bean을 이용해서 @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<String, Object> redis = new RedisTemplate<>(); redis.setConnectionFactory(factory); redis.setKeySerializer(new StringRedisSerializer()); redis.setHashKeySerializer(new StringRedisSerializer()); redis.setHashValueSerializer(new StringRedisSerializer()); redis.setValueSerializer(new StringRedisSerializer()); return redis; }해당 코드를 통해 RedisTemplate를 빈으로 등록한걸 확인했는데요.근데 왜 RedisCommon 클래스 쪽에선 해당 Bean을 사용하지 않고 RedisTemplate<String,String> 을 사용하나요?Bean으로 등록한건 RedisTemplate<String,Object>인데 그럼 스프링에서는 만들어 놓은 RedisTemplate<String,Object>을 사용하지 않고 새로운 RedisTemplate<String,String>을 만들어서 주입하는 걸로 알고있습니다.저 Bean으로 등록해놓은 RedisTemplate<String,Object>의 직렬화 및 역직렬화에 사용될 객체를 집어넣어주는 코드는 Redis 전체 설정인가요?? 저렇게 하면 RedisTemplate<String,String>에도 적용이 되는건가요??- 강사님의 이론편을 안봐서 제가 이해가 잘 안가는 것 일 수도 있습니다 ㅠㅠ실제로 RedisConfig 클래스에서 정의한 RedisTemplate<String, Object>와 RedisString에서 정의한 RedisTemplate<String,String>의 해시코드를 비교해봤는데 서로 다른 값이 나왔습니다.@Service @RequiredArgsConstructor public class RedisString { private final RedisTemplate<String, String> template; private final RedisTemplate<String, Object> template2; // RedisTemplate@544e3679RedisConfig에서 스프링의 빈 초기화시 로그 // RedisTemplate@544e3679RedisString에서 찍은 template2 로그 // StringRedisTemplate@6d5bb599 RedisString에서 찍은 template 로그
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
WebUtil 관련
WebUtil이 지원하지 않는거 같은데 맞을까요?(WebUtils만 보이네요)
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
http://localhost:8080/index.html HTTP ERROR 405 에러..
main/webapp/index.html 경로에 붙여넣기를 했는데 나오지 405 에러가 나옵니다..ㅠ혹시나 해서 메모장 넣기, 인터넷 사용 기록 삭제 모두 해봐도 비슷합니다.. 다른 글보니 ssd 얘기가 있던데 인텔리제이는 C:D 드라이브에 spring.gradle 파일이 있으면 안되는건가요..?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
application.properties
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]application.properties에 등록한 아래 내용 동작하지 않습니다.spring.mvc.view.prefix=/WEB-INF/views/ spring,mvc.view.suffix=.jspServletApplication@Bean InternalResourceViewResolver internalResourceViewResolver(){ return new InternalResourceViewResolver("/WEB-INF/views/", ".jsp"); }위 내용 등록시 동작합니다.버전 차이인가요? 아니면 인텔리제이 유료/무료 차이인가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Mvc , Api 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 스프링 관련 로드맵을 거의 다 들은 후에 mvc 2편으로 돌아왔습니다. 궁금한 점이 생겼는데요, 대부분의 협업에서는 프론트엔드와 백엔드로 분리하여 맡은 역할을 수행하고 ,이때 api 를 통해서 필요한 데이터를 받고 전송하는 것으로 알고 있습니다. 강의에서 mvc 패턴을 사용하는 이유는 렌더링의 편의성을 위해서이고, 해당 강의에서 배우는 예외처리, 로그인, 파일 업로드 등은 비단 mvc에서 뿐만 아니라 api 방식에서 또한 근본은 같다라고 이해하였는데 제가 이해한 내용이 맞을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
엔티티매니저가 각각의 저장소에서 final로 선언될 수 있는 이유
엔티티매니저가 각각의 저장소에서 final로 선언될 수 있는 이유가 궁금합니다. final의 경우 한 번 선언하면, 교체될 수 없는 것 아닌가요? 혹시 관련 자료와 함께 설명을 첨부 해주시면 너무 감사하겠습니다.
-
미해결스프링 핵심 원리 - 기본편
autowired 해결이 안돼요..
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]Autowired members must be defined in valid Spring bean (@Component|@Service|...) 라는 에러가 나왔습니다 코드 진행은 강의와 동일한 것 같아요.. package halo.core.scope; import jakarta.annotation.PostConstruct; import jakarta.annotation.PreDestroy; import lombok.RequiredArgsConstructor; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Scope; import org.springframework.scheduling.annotation.Scheduled; public class SingletonWithPrototypeTest1 { @Test void prototypeFind(){ AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(PrototypeBean.class); PrototypeBean prototypeBean1 = ac.getBean(PrototypeBean.class); prototypeBean1.addCount(); Assertions.assertThat(prototypeBean1.getCount()).isEqualTo(1); PrototypeBean prototypeBean2 = ac.getBean(PrototypeBean.class); prototypeBean2 = ac.getBean(PrototypeBean.class); prototypeBean2.addCount(); Assertions.assertThat(prototypeBean2.getCount()).isEqualTo(1); } @Test void singletonClientUserPrototype(){ AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(ClientBean.class,PrototypeBean.class); ClientBean clientBean1 = ac.getBean(ClientBean.class); int count1= clientBean1.logic(); Assertions.assertThat(count1).isEqualTo(1); ClientBean clientBean2 = ac.getBean(ClientBean.class); int count2= clientBean2.logic(); Assertions.assertThat(count2).isEqualTo(2); } @Scope("singleton") static class ClientBean{ private final PrototypeBean prototypeBean; @Autowired public ClientBean(PrototypeBean prototypeBean) { this.prototypeBean = prototypeBean; } public int logic(){ prototypeBean.addCount(); int count = prototypeBean.getCount(); return count; } } @Scope("prototype") static class PrototypeBean{ private int count =0; public void addCount(){ count++; } public int getCount(){ return count; } @PostConstruct public void init() { System.out.println("PrototypeBean.init" + this); } @PreDestroy public void destroy() { System.out.println("PrototypeBean.destroy" + this); } } }