묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 고급편
프록시가 있어야 어드바이스를 적용할 지 말지를 판단한다는게 무엇인지 잘 모르겠습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 내용을 다시 읊어보면," 이번 예제를 보면 execution(* hello.aop..*(..)) 를 통해 적용 대상을 줄여준 것을 확인할 수 있다. args , @args , @target 은 실제 객체 인스턴스가 생성되고 실행될 때 어드바이스 적용 여부를 확인할 수 있다." 여기까지는 이해했습니다.다음 부분부터 이해가 잘 안되는데,==" 실행 시점에 일어나는 포인트컷 적용 여부도 결국 프록시가 있어야 실행 시점에 판단할 수 있다. " 여기서 실행이라는 것이 애플리케이션의 실행을 말씀하시는 것인가요? 아니면 프록시로 생성된 인스턴스의 메소드 실행을 의미하는 것인가요? == =="프록시가 없다면 판단 자체가 불가능하다. 그런데 스프링 컨테이너가 프록시를 생성하는 시점은 스프링 컨테이너가 만들어지는 애플리케이션 로딩 시점에 적용할 수 있다. " 이 부분도 잘 이해가 가지 않습니다. 스프링 컨테이너가 프록시를 생성하는 시점을 애플리케이션 로딩 시점에 적용할 수 있다는 것이 어떤 의미인가요? 스프링 컨테이너가 프록시를 생성하는 시점과, 애플리케이션 로딩 시점이 같다는 의미일까요? ==== " 따라서 args , @args , @target 같은 포인트컷 지시자가 있으면 스프링은 모든 스프링 빈에 AOP를 적용하려고 시도한다. " 예를들어 @target같은 경우는, 주어진 어노테이션이 붙어있는 클래스의 인스턴스가 스프링 빈으로 등록이 되려고 할 때에만 AOP를 적용하려고 시도하는 것이 아닌가요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
@Autowired 안 쓰는 이유가 있을까요??
Service나 jdbcTemplate 변수 설정하실 때 @Autowired 안 쓰신 이유가 따로 있으실까요???
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
테스트 코드 작성 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 강의에서 테스트 코드 작성 중 MemoryMemberRepository에 clearStore()를 추가해주셨는데, 해당 메소드는 실제 실행시에는 사용되지 않고 테스트할때만 사용하는 메소드인 건가요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
build 폴더가 만들어지지 않습니다.
윈도우에서 ./gradlew 해서 설치한 후 build폴더가 안만들어지는데, 원인을 모르겠습니다. 저는 윈도우인데 gradlew.bat 명령어가 안먹히긴 하더라구요그래서 ./gradlew로 명령어 치니 뭔가 설치된것처럼 석세스가 나오긴 하네요..자바는 18입니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Querydsl 레포지토리 분리
안녕하세요 영한님! 저는 V4 방식으로 조회를 할 때, 주로 querydsl을 사용해서 쿼리를 작성합니다. (new 키워드도 제거할 수 있고, 좀 더 직관적인 이유 때문입니다.)이런 경우 쿼리용 레포지토리를 분리할 때 쿼리 레포지토리용 CustomRepository를 따로 작성해줘야 하나요?? 엔티티 조회용OrderRepository CustomOrderRepository 쿼리 조회용 (DTO)OrderQueryRepository CustomOrderQueryRepository
-
미해결스프링 핵심 원리 - 기본편
옵션 처리
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]좀 이상한 질문일 수는 있는데 @Test void AutoWiredOption() { ApplicationContext ac = new AnnotationConfigApplicationContext(TestBean.class); } static class TestBean { @Autowired(required = false) public void setNoBean1(Member noBean1) { System.out.println("noBean1 = " + noBean1); } @Autowired public void setNoBean2(@Nullable Member noBean2) { System.out.println("noBean2 = " + noBean2); } @Autowired public void setNoBean1(Optional<Member> noBean3) { System.out.println("noBean3 = " + noBean3); } } 이 코드는 그냥 @Autowired에서 의존관계에 주입할 스프링 빈이 없을 때 동작을 실행하기 위한 그냥 단순한 코드인가요??ApplicationContext ac = new AnnotationConfigApplicationContext(TestBean.class);에서는 TestBean을 설정 정보로 넘기고는 있지만 @Bean이나 @Component같은 어노테이션이 포함이 되어 있어야 해당 클래스 명이나 메서드 명으로 스프링을 등록하는게 아닌가요...? @Autowired는 그냥 단순히 스프링 컨테이너에서 타입과 맞는 스프링 빈을 찾아서 등록해주는 건데 이해가 잘 되지 않아서요.
-
미해결스프링 핵심 원리 - 고급편
@Retention(RetentionPolicy.RUNTIME) 질문입니다!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@Retention(RetentionPolicy.RUNTIME)을 붙이게 되면 해당 어노테이션이 애플리케이션 실행될 때 까지 살아있다는 것이 정확히 어떤 의미인지 알고 싶습니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
mvc 관련질문/500에러뜹니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.[질문 내용]강의 보면서 똑같이 따라써도 계속 오류가납니다(@RequestParam("name")String name, Model model)이것도 써봤는데 안되어서 혹시 몰라 required=false로해봐도 안됩니다.. 어느게 문제인지 모르겠습니다 ㅠ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문조회 질문입니다.
자바 17로 하면 아래같이 코드를 캐스캐이드 하라고 나옵니다. cq.where(cb.and(criteria.toArray(new Predicate[criteria.size()]))); 이부분은 캐스캐이드 해줘도 빨간줄이 나옵니다. 혹시 17버전으로 작동되는 코드는 어떤것이 있을까요? package jpabook.jpashop.repository;import jakarta.persistence.EntityManager;import jakarta.persistence.TypedQuery;import jakarta.persistence.criteria.*;import jpabook.jpashop.domains.Order;import lombok.RequiredArgsConstructor;import org.springframework.stereotype.Repository;import org.springframework.util.StringUtils;import java.util.ArrayList;import java.util.List;import java.util.function.Predicate;@Repository@RequiredArgsConstructorpublic class OrderRepository { private final EntityManager em; public void save(Order order){ em.persist(order); } public Order fineOne(Long id){ return em.find(Order.class,id); }// public List<Order> findAllByString(OrderSearch orderSearch){// QOrder order=QOrder.order;//// } /** * JPA Criteria */ public List<Order> findAllByCriteria(OrderSearch orderSearch) { CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Order> cq = cb.createQuery(Order.class); Root<Order> o = cq.from(Order.class); Join<Object, Object> m = o.join("member", JoinType.INNER); List<Predicate> criteria = new ArrayList<>(); //주문 상태 검색 if (orderSearch.getOrderStatus() != null) { Predicate status = (Predicate) cb.equal(o.get("status"), orderSearch.getOrderStatus()); criteria.add(status); } //회원 이름 검색 if (StringUtils.hasText(orderSearch.getMemberName())) { Predicate name = (Predicate) cb.like(m.<String>get("name"), "%" + orderSearch.getMemberName() + "%"); criteria.add(name); } cq.where(cb.and(criteria.toArray(new Predicate[criteria.size()]))); TypedQuery<Order> query = em.createQuery(cq).setMaxResults(1000); return query.getResultList(); }}
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
재고수량 초과 테스트 InvalidDataAccessApiUsageException
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]재고수량 초과할 때 NotEnoughStockException 예외가 터져야 하는데 InvalidDataAccessApiUsageException 예외가 나오네요에러 메세지와 코드 첨부하겠습니다 [error message]java.lang.Exception: Unexpected exception, expected<jpabook2.jpashop2.exception.NotEnoughStockException> but was<org.springframework.dao.InvalidDataAccessApiUsageException> at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:30) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: id to load is required for loading at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:246) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:550) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:335) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:717) at jpabook2.jpashop2.repository.ItemRepository$$SpringCGLIB$$0.findOne(<generated>) at jpabook2.jpashop2.service.OrderService.order(OrderService.java:34) 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.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:351) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:392) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:717) at jpabook2.jpashop2.service.OrderService$$SpringCGLIB$$0.order(<generated>) at jpabook2.jpashop2.service.OrderServiceTest.재고수량_초과(OrderServiceTest.java:62) 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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:76) at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84) at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:19) ... 23 moreCaused by: java.lang.IllegalArgumentException: id to load is required for loading at org.hibernate.event.spi.LoadEvent.<init>(LoadEvent.java:77) at org.hibernate.event.spi.LoadEvent.<init>(LoadEvent.java:43) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.load(IdentifierLoadAccessImpl.java:206) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.doLoad(IdentifierLoadAccessImpl.java:160) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.lambda$load$1(IdentifierLoadAccessImpl.java:149) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.perform(IdentifierLoadAccessImpl.java:112) at org.hibernate.loader.internal.IdentifierLoadAccessImpl.load(IdentifierLoadAccessImpl.java:149) at org.hibernate.internal.SessionImpl.find(SessionImpl.java:2424) at org.hibernate.internal.SessionImpl.find(SessionImpl.java:2390) 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.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:319) at jdk.proxy2/jdk.proxy2.$Proxy123.find(Unknown Source) at jpabook2.jpashop2.repository.ItemRepository.findOne(ItemRepository.java:25) 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.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:351) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ... 55 more[코드]@Autowired EntityManager em; @Autowired OrderService orderService; @Autowired OrderRepository orderRepository;@Test(expected = NotEnoughStockException.class) public void 재고수량_초과() throws Exception { //given Member member = createMember(); Item item = createBook("JPA book", 10000, 10); int orderCount = 11; //when orderService.order(member.getId(), item.getId(), orderCount); //then fail("재고 수량 부족 예외가 발생해야 한다."); }
-
미해결토비의 스프링 부트 - 이해와 원리
섹션6. 자동 구성 정보 파일 분리 강의에서 질문 있습니다
MyAutoConfigImportSelector를 ImportSelector 인터페이스를 구현하시는 강의를 보았습니다. 한가지 궁금한게 직접 스프링 부트 실행시 MyAutoConfigImportSelector가 생성되는 것을 디버깅을 통해 확인을 해보았는데, ConfigurationClassParser 클래스의 processImports 메서드라는 곳에서 일시적으로 ImportSelect 구현 클래스(MyAutoConfigImportSelector)를 인스턴스화 하는 코드를 확인하였고,그 이후, ImportSelect 구현 클래스인 MyAutoConfigImportSelector의 selectImports 메서드를 호출하는 것을 확인하였습니다. (ConfigurationClassParser 566 ~ 582 라인) 그렇다면, MyAutoConfigImportSelector의 생성자에서 classLoader를 의존성 주입 받는 것이 아니라 일시적으로 MyAutoConfigImportSelector를 인스턴스화하여 classLoader를 생성자에서 초기화하고, 그 이후에 selectImports를 호출하는걸로 봐도 될까요?라이브러리 코드를 좀더 깊게 살펴보니, 생성자에서 Environment, ResourceLoader, BeanFactory, ClassLoader 총 4가지 클래스에 대해서만 객체를 설정해주는 것을 확인할 수 있었습니다. 처음엔 classLoader를 스프링 빈 컨테이너가 알아서 의존성 주입으로 classLoader를 주입하는줄 알았는데, 생각을 해보니 의존성 주입은 스프링 빈 컨테이너가 스캔 대상인 빈들 내부에서만 의존성 주입을 하는 것으로 알고 있는데, MyAutoConfigImportSelector 같은 경우는 ApplicationContext 클래스에서 확인해보아도 빈으로 생성되지 않고 있습니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Bean Validation 사용 시 메시지 코드에 대한 파라미터 지정
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]@NotBlank , @NotNull와 같은 Bean Validation 관련 어노테이션을 통해 검증할 경우 동적으로 파라메터를 지정해서 메시지를 처리할 수는 없는 것인가요?예를 들어 Bean Validation으로 메시지를 지정할 땐 @NotBlank("값은 필수여야합니다.")와 같이 기본 메시지를 지정하던가 혹은 error.properties와 같은 메시지 코드 관리하는 properties 파일에서 NotBlank=값은 필수여야합니다. 와 같이 메시지 코드를 통하여 메시지를 지정할 수 있는데 이때 {0} , {1}을 넣음으로써 동적으로 파라메터를 지정해서 바인딩하는 방법을 모르겠어서 여쭤봅니다 !
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품 등록 강의 질문있습니다.
상품 등록 강의 5분부터 form을 넘겨줘서 추적이 가능하다고 하셨는데요.model.addAttribute("form", new BookForm()); form 이부분이 html의 form부분과 이름이 같아서 추적이 가능한건가요?
-
미해결스프링 핵심 원리 - 기본편
필드 주입
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]다른 필드 주입 관련 게시글을 다 보고 왔는데 제가 이해한 것이 맞는지 모르겠습니다. 강의에서 나온 코드를 보면 nullpointexception이 발생한다고 했는데 생각하기엔 그렇구나 하는데 뭔가 완벽히 이해가 안갑니다. 그리고 외부에서 변경이 불가능 하다고 했는데 생성자 주입에서 변경이 불가능 한 것과는 다른 건가요?
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
13분 11초에서 최근 파일 보는 단축키
강사님 안녕하세요, 강의 잘듣고 있습니다. 디버깅하면서 내용을 이해하려고 하는데 따라가기가 조금 벅차네요. 13분 11초 대에 Recent files 검색하는 부분 윈도우 단축키가 무엇인지 궁금합니다. 좋은강의 감사합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Repository Test에 관해서 질문 드립니다.
강의 다 보고 코드 복습하고 있는데 Repository 테스트를 진행한 걸 보고 의문점이 들었습니다.처음에 Jdbc, Jpa 등 DB 연결을 하지 않았을 때는 아래처럼 메소드 구현하고 테스트 한 것으로 이해했습니다.(1) DB와 연동되어있지 않은 클래스 테스트 (in-memory-database(IMDB))MemberRepository -> MemoryMemberRepository 구현 -> MemoryMemberRepositoryTest 테스트그렇다면 만약 Jpa를 구현하게 된다면 어떻게 테스트를 진행해야 할지 궁금합니다.Jpa를 사용하는 Repository인 경우 별개로 IMDB에서만 단위/통합 테스트를 진행하는 것이 좋을까요? 테스트를 어떻게 해야할지 생각해봤는데 (1), (2) 둘 중에 어느 방안으로 진행해야 할까요?(2) Jpa로 구현되어있는 클래스 테스트MemberRepository -> JpaMemberRepository 구현 -> JpaMemberRepositoryTest 테스트 그리고 Repository로 단위 테스트 진행 후, 통합 테스트도 진행이 필요한지 궁금합니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ServletApplication 실행 안됨
현재 HTTP 요청 데이터 - 개요를 듣고 있습니다.강의 초반부인데 ServletApplication 실행이 아래의 오류는 아닌데 서버가 띄어지지 않고 바로 종료가 됩니다 2024-04-19T15:53:01.823+09:00 INFO 17800 --- [servlet] [ main] hello.servlet.ServletApplication : Starting ServletApplication using Java 17.0.10 with PID 17800 (C:\Users\uniti\OneDrive\바탕 화면\Developer\Back End\Spring\core\mvc1\servlet\servlet\out\production\classes started by uniti in C:\Users\uniti\OneDrive\바탕 화면\Developer\Back End\Spring\core\mvc1\servlet\servlet)2024-04-19T15:53:01.830+09:00 INFO 17800 --- [servlet] [ main] hello.servlet.ServletApplication : No active profile set, falling back to 1 default profile: "default"2024-04-19T15:53:03.289+09:00 WARN 17800 --- [servlet] [ main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Instantiation of supplied bean failed2024-04-19T15:53:03.309+09:00 INFO 17800 --- [servlet] [ main] .s.b.a.l.ConditionEvaluationReportLogger :Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.2024-04-19T15:53:03.364+09:00 ERROR 17800 --- [servlet] [ main] o.s.boot.SpringApplication : Application run failedorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Instantiation of supplied bean failedat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1223) ~[spring-beans-6.1.6.jar:6.1.6]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1161) ~[spring-beans-6.1.6.jar:6.1.6]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) ~[spring-beans-6.1.6.jar:6.1.6]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) ~[spring-beans-6.1.6.jar:6.1.6]at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.1.6.jar:6.1.6]at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.6.jar:6.1.6]at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.1.6.jar:6.1.6]at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:205) ~[spring-beans-6.1.6.jar:6.1.6]at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:202) ~[spring-context-6.1.6.jar:6.1.6]at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:788) ~[spring-context-6.1.6.jar:6.1.6]at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:606) ~[spring-context-6.1.6.jar:6.1.6]at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-3.2.5.jar:3.2.5]at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[spring-boot-3.2.5.jar:3.2.5]at org.springframework.boot.SpringApplication.run(SpringApplication.java:334) ~[spring-boot-3.2.5.jar:3.2.5]at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) ~[spring-boot-3.2.5.jar:3.2.5]at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) ~[spring-boot-3.2.5.jar:3.2.5]at hello.servlet.ServletApplication.main(ServletApplication.java:12) ~[classes/:na]Caused by: java.lang.NoClassDefFoundError: jakarta/servlet/annotation/WebServletat org.springframework.boot.web.servlet.WebServletHandler.<init>(WebServletHandler.java:39) ~[spring-boot-3.2.5.jar:3.2.5]at org.springframework.boot.web.servlet.ServletComponentRegisteringPostProcessor.<clinit>(ServletComponentRegisteringPostProcessor.java:62) ~[spring-boot-3.2.5.jar:3.2.5]at org.springframework.boot.web.servlet.ServletComponentScanRegistrar$ServletComponentRegisteringPostProcessorBeanDefinition.lambda$getInstanceSupplier$0(ServletComponentScanRegistrar.java:94) ~[spring-boot-3.2.5.jar:3.2.5]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainInstanceFromSupplier(AbstractAutowireCapableBeanFactory.java:1257) ~[spring-beans-6.1.6.jar:6.1.6]at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:951) ~[spring-beans-6.1.6.jar:6.1.6]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1217) ~[spring-beans-6.1.6.jar:6.1.6]... 16 common frames omittedCaused by: java.lang.ClassNotFoundException: jakarta.servlet.annotation.WebServletat java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na]at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na]at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[na:na]... 22 common frames omitted
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
pdf 파일 수정 부탁드립니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]2. 서블릿 pdf 파일에서 HTTP 요청 메시지 로그로 확인하기 부분에logging.level.org.apache.coyote.http11=debug 라고 되어 있어요근데 스프링 3 버전부터는 debug가 아니라 trace로 해야 적용이 되더라구요 그 부분 추가해주시면 다른 분들한테 도움될 거 같아요!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
mvc1편 model추가 - v3 오류 좀 확인해 주세요
링크 제한 풀어서 다시 질문 드립니다. v3의 회원가입을 실행하면 아래 오류가 뜹니다.localhost 페이지를 찾을 수 없음다음 웹 주소(http://localhost:8080/front-controller/v3/members/new-form)에 대해 발견된 웹페이지가 없습니다.HTTP ERROR 404 frontcontroller의 service가 두번 실행되는거 같습니다. (디버그 출력내용)requestURI = /front-controller/v3/members/new-formcontroller = hello.servlet.web.frontcontroller.v3.controller.MemberFormControllerV3@71b85ab7requestURI = /front-controller/v3/members/WEB-INF/views/new-form.jsp링크>>https://drive.google.com/file/d/1Tnp-X-Ua_O6pdnICKzPTyrGKdsY4blNe/view?usp=sharing
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
MemberServiceTest에 관하여 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]MemeberServiceTest 다 돌려봤는데 outerTxOff_fail()만 에러 뜨는게 정상인거죠??