묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 부트 - 핵심 원리와 활용
javaw 로 백그라운드 실행한 이후에 재시작할 때는 종료 후 시작으로 하면 되나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]저희 회사는 지금 외장 톰캣을 사용하고 있습니다. 그런데 외장 톰캣과 관련해서 SpringApplicationShutdownHook 에 버그가 있고, 최근까지도 spring github 에 issue 로 보고된 것으로 알고 있습니다. 그 외에도 불편한 건 좀 있지만 특히 이 버그 때문에 내장 톰캣으로 배포해야겠다는 생각을 했습니다. java -jar 로 실행하면 포어그라운드에서 실행되며 프롬프트를 나가면 해당 프로세스도 자동으로 종료가 됩니다. 그래서 javaw -jar 로 실행해서 백그라운드로 실행하려고 합니다. 1. 한 번 배포한 이후에는 매번 백그라운드의 프로세스를 종료하고 다시 시작하면 되나요?2. 내장 톰캣 방식으로 애플리케이션을 실행하면, 외장 톰캣에 ROOT.war 를 옮기면 자동으로 재시작하는 그런 방법은 더 이상 사용할 수 없나요?3. 1번과 2번이 그렇다는 가정 하에 제가 아는 지식 선에서는, 서비스의 중단 없이 배포를 하기 위해서는 2대의 서버 또는 서비스와 로드 밸런서를 활용해서 순차적으로 2개의 애플리케이션에 재시작 스크립트를 재실행하면 될 것 같습니다(CentOS 와 젠킨스를 사용하고 있습니다).혹시 실무에서 더 추천할 만한 배포 방식이나, 관련 레퍼런스를 알기 위한 키워드, 공부 방향을 배울 수 있을까요??
-
해결됨스프링 핵심 원리 - 기본편
코드를 그대로 입력했는데 getBeanDefinition에서 에러 발생합니다 ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 애플리케이션 빈 출력하기 코드 부분 중 아래에 있는 부분에서 에러가 발생합니다 ㅠㅠBeanDefinition beanDefinition = ac.getBeanDefinition(beanDefinitionName);강사님과 똑같이 코드를 입력했는데 getBeanDefinition에서 아래와 같은 에러가 발생합니다java: cannot find symbol symbol: method getBeanDefinition(java.lang.String) location: variable ac of type org.springframework.context.ApplicationContext 참고로 자바 17 사용중입니다. 아래는 전체 코드입니다.package hello.core.beanfind; import hello.core.AppConfig; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class ApplicationContextInfoTest { ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); @Test @DisplayName("모든 빈 출력하기") void findAllBean() { String[] beanDefinitionNames = ac.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { Object bean = ac.getBean(beanDefinitionName); System.out.println("name = " + beanDefinitionName + " Object : " + bean); } } @Test @DisplayName("애플리케이션 빈 출력하기") void findApplicationBean() { String[] beanDefinitionNames = ac.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { BeanDefinition beanDefinition = ac.getBeanDefinition(beanDefinitionName); // Role ROLE_APPLICATION : 직접 등록한 애플리케이션 빈 // Role ROLE_INFRASTRUCTURE : 스프링이 내부에서 사용하는 빈 if (beanDefinition.getRole() == BeanDefinition.ROLE_APPLICATION) { Object bean = ac.getBean(beanDefinitionName); System.out.println("name = " + beanDefinitionName + " Object : " + bean); } } } }
-
미해결스프링 핵심 원리 - 기본편
섹션2 APPCONFIG리팩토링 1분 35초 강의에서 질문있습니다.
섹션2 APPCONFIG리팩토링 1분 35초 강의에서 질문있습니다.저는 선생님처럼 저런 네모창이 안뜨고 오른쪽 화면처럼 자동으로 변수명이 바뀌는데 네모창 틀려면 어떻게 해야 하나요? 화면 확대는 새탭에서 이미지 열기 하시면 그림 확대에서 보입니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
SessionManagerTest 질문입니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]수고많으십니다! SessionManagerTest 작성중에 createSession을 구현할때 Member를 넣는데 생성된 member는 빈값이 아닌가요?? 제 생각으로는 생성자로 임의의 테스트 member 객체를 하나 같이 넣어주어야된다고 생각을하는데 잘못생각하고잇는지 궁금합니다! ex) new Member(test, test, test,test)
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
오탈자 제보합니다
스프링 MVC 1편 - 기본기능.pdf 입니다. 매핑값에 의하면 "/request-param-required" 로 요청해야 하는데/request-param 으로 요청하라고 써 있네요.
-
미해결스프링 핵심 원리 - 기본편
예제2 질문입니다.
새로운 할인 정책 개발에서 RateDiscountPolicyTest파일에서 RateDiscountPolicy DiscountPolicy=new RateDiscountPolicy(); 이렇게 쓰는데요.class OrderServiceTest {MemberService memberService = new MemberServiceImpl();OrderService orderService = new OrderServiceImpl();근데 OrderServiceTest 에서는 뒤에 IMPL이 붙여져 있는 파일을 객체로 사용하는데 위랑 같은 형식으로 사용할려면 MemberService memberService = new MemberService();이렇게 써야 하는거 아닌가요?2.새로운 할인 정책 적용과 문제점 4분 19초에private final DiscountPolicy discountPolicy=new FixDiscountPolicy();이 코드가 인터페이스도 의존하고 구체화도 의존한다고 했는데 어느게 인터페이스 의존하고 어느게 구체화도 의존한건가요?FixDiscountPolicy() 이게 구체화의존하고 DiscountPolicy 이게 인터페이스 의존했다는 말씀인가요?3.새로운 할인 정책 적용과 문제점 6분에 OCP위반되었다고 하는데 아래처럼 FixDiscountPolicy();에서-> RateDiscountPolicy(); 이렇게 바꾸는게 OCP위반인가요?// private final DiscountPolicy discountPolicy=new FixDiscountPolicy();private final DiscountPolicy discountPolicy=new RateDiscountPolicy();4.관심사의 분리 17분appConfig 객체는 memoryMemberRepository 객체를 생성하고 그 참조값을 memberServiceImpl 을생성하면서 생성자로 전달한다고 하셨는데요.근데 코드 보면 public class AppConfig {public MemberService memberService() {return new MemberServiceImpl(new MemoryMemberRepository());}리턴으로 반환값인데 전달을 어디서 하는거에요?5.관심사의 분리 7분 45초에 public MemberServiceImpl(MemberRepository memberRepository) { 위에 4 related problem이 있는데요.강의를 따라가면 에러가 해결되긴 하는데요.에러를 보면public MemberServiceImpl(MemberRepository memberRepository)이거와 아래 코드가 연관된 문제라고 하는데 다른 클래스인데도 왜 연관되어있나요? class OrderServiceTest { MemberService memberService = new MemberServiceImpl(); OrderService orderService = new OrderServiceImpl();6.관심사의 분리 22분에 강의에서 null로 채우시면 컴파일 오류가 안나는데 왜 안나는 거에요?
-
해결됨스프링 핵심 원리 - 기본편
DI에 관해서 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]DI는 결국 인터페이스를 의존하는데, 클래스를 의존하게 된다면 필드에 private final Class clss = new Class();로 생성해서 사용하면 되나요?인터페이스가 필요없는 클래스들도 DI를 위해서 인터페이스를 새로 생성 해야할까요?모든것에 DI를 적용해야 하는것인지 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
@Autowired 생략 가능한 경우
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]@Autowired를 생략 가능한 경우로 생성자가 1개일 때 가능한 건 알고 있는데 필드 주입이나 수정자 주입의 경우엔 필드가 1개일 때 혹은 수정자 메서드가 1개일 때 @Autowired 생략 가능하다 이런 건 따로 없는 건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 편의 메서드 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 강의를 듣다가 헷갈리는 점이 생겨 질문드립니다연관관계 편의 메서드는 양방향 관계일때만 사용하면 되는지 궁금합니다만약에 연관관계 메서드를 사용하지 않아서 예를 들어 order엔티티에서 this.member = member만을 해주면 order테이블에는 member 정보가 들어가 있지만 member 테이블에는 order의 정보가 없고 null 상태인건가요?
-
미해결스프링 부트 - 핵심 원리와 활용
스프링 MVC 서블릿 컨테이너 초기화 지원
http://localhost:8080/hello-spring을 실행해도 System.out.println("HelloController.hello");이 출력되지 않습니다. 어떻게 해결하나요?
-
미해결스프링 부트 - 핵심 원리와 활용
톰캣설정 - 인텔리 J무료 버전 로그
톰캣 설정 후 실행하면 아래와 같은 문장만 찍히고 로그가 찍히지 않습니다.-이 문제는 어떻게 해결해야 하나요?
-
미해결스프링 핵심 원리 - 고급편
@target 관련
안녕하세요 강의 잘 듣고 있습니다.강의 말미에 args, @args, @target은 단독으로 사용하면 안 된다고 하셨고 다음과 같은 이유를 말씀하셨습니다. '실제 객체 인스턴스가 생성되고 런타임에 적용 여부를 알 수 있다'아규먼트의 실제 타입을 요구하는 args, @args는 비교적 직관적으로 이해했는데, @target은 어째서 런타임에 적용 여부를 알아야만 하는 걸까요? 마치 @within이 그런 것처럼 클래스 내부에 특정 어노테이션이 있으면 해당 클래스부터 부모 클래스까지 AOP를 적용하면 될 것 같은데 말이죠.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
변경감지와 병합 25:54초 부분 DB에 수정안됨
강사님 안녕하세요 ItemService updateItem 메서드에서 pk넣어서 아이템을 받아온 뒤 Item 객체에서 change 메서드만들고 Book 객체를 생성해서 받아온 값들을 넣었는데 DB에 인서트가 되지않습니다 @Transactinal 어노테이션도넣었고 값도 정상적으로 받아진거까지는 확인했습니다 하지만 DB에 인서트가 날라가지않습니다 BOOK이 그냥객체로 인식되서 JPA에서 인서트쿼리를 안날리는걸가요? 수정이 정상적으로 되게 insert 쿼리가 날라가려면 어떤부분을 고처야 할가요? 오랜시간 답을 못찾아서 질문 남깁니다. 감사합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
테이블을 못 찾습니다. ㅠㅠ
데이터베이스도 생성해주고 해당 테이블도 만들어주었으나 정보를 입력했을 때 해당 테이블을 찾지못해 내부 서버 오류가 발생합니다. 추가적으로 더 설정해줘야 하는 것이 있나요?아래 로그 첨부하겠습니다ㅠㅠjava.sql.SQLSyntaxErrorException: Table 'library.user' doesn't existat com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:121) ~[mysql-connector-j-8.0.33.jar:8.0.33]at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-j-8.0.33.jar:8.0.33]at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916) ~[mysql-connector-j-8.0.33.jar:8.0.33]at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1061) ~[mysql-connector-j-8.0.33.jar:8.0.33]at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1009) ~[mysql-connector-j-8.0.33.jar:8.0.33]at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1320) ~[mysql-connector-j-8.0.33.jar:8.0.33]at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:994) ~[mysql-connector-j-8.0.33.jar:8.0.33]at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61) ~[HikariCP-4.0.3.jar:na]at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java) ~[HikariCP-4.0.3.jar:na]at org.springframework.jdbc.core.JdbcTemplate.lambda$update$2(JdbcTemplate.java:973) ~[spring-jdbc-5.3.29.jar:5.3.29]at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:656) ~[spring-jdbc-5.3.29.jar:5.3.29]at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:968) ~[spring-jdbc-5.3.29.jar:5.3.29]at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:1023) ~[spring-jdbc-5.3.29.jar:5.3.29]at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:1033) ~[spring-jdbc-5.3.29.jar:5.3.29]at com.group.libraryapp.controller.user.UserController.saveUser(UserController.java:37) ~[main/:na]at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.29.jar:5.3.29]at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.29.jar:5.3.29]at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.29.jar:5.3.29]at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.29.jar:5.3.29]at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.29.jar:5.3.29]at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.29.jar:5.3.29]at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072) ~[spring-webmvc-5.3.29.jar:5.3.29]at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965) ~[spring-webmvc-5.3.29.jar:5.3.29]at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.29.jar:5.3.29]at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.29.jar:5.3.29]at javax.servlet.http.HttpServlet.service(HttpServlet.java:555) ~[tomcat-embed-core-9.0.79.jar:4.0.FR]at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.29.jar:5.3.29]at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) ~[tomcat-embed-core-9.0.79.jar:4.0.FR]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-9.0.79.jar:9.0.79]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.29.jar:5.3.29]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.29.jar:5.3.29]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.29.jar:5.3.29]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.29.jar:5.3.29]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.29.jar:5.3.29]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.29.jar:5.3.29]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1790) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.79.jar:9.0.79]at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
바이트코드와 getInputStream
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]'HTTP 요청 데이터 - API 메시지 바디 - 단순 텍스트' 강의에서 API방식으로 단순 텍스트 전달할 때 request body의 내용을 getInputStream을 이용해서 바이트코드로 변환하는 내용이 나옵니다. 왜 request body의 내용(String)을 바이트코드로 변환하는 지바이트코드란 무엇인지에 대해 질문드립니다. 항상 친절한 답변 감사드립니다.
-
해결됨스프링 핵심 원리 - 고급편
포인트컷 표현식 질문
안녕하세요 강의 잘 듣고있습니다.강의에서 등장하는 AtTargetAtWithinAspect의 execution 표현식을 보면 * hello.aop..*(..)로 기재되어 있습니다.이전 강의에서 학습했던 표현식(* hello.aop..*.*(..))과 어떤 차이점이 있는건가요?
-
해결됨스프링 핵심 원리 - 기본편
혹시 강의 자료 오타인지 궁금합니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]빈 스코프.pdf 3 페이지에이렇게 나와 있습니다. 세 번째에 memberService 요청이라고 써져 있는데 오타인가 싶어서 말씀드립니다.
-
해결됨스프링 핵심 원리 - 기본편
프로토타입 스코프 빈의 스프링 빈 저장소에서의 상태
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]아래 사진은 예전에 스프링 컨테이너와 스프링 빈 파트의 학습 자료에 있는 사진입니다.위 사진은 싱글톤 기준으로 설명된 그림 같은데 프로토타입 스코프 빈의 경우를 위 그림에 대입하면스프링 컨테이너가 생성된 이후, 스프링 빈 저장소에 빈 이름만 있고, 빈 객체는 비어 있다고 생각하면 될까요? 요청이 와야 비로소 객체를 생성 후 클라이언트에게 반환하고, 요청이 온 이후에도 스프링 빈 저장소엔 여전히 빈 이름만 있고 빈 객체는 비어 있다고 보면 되나요? 제대로 이해한 건지 확인차 질문드립니다.
-
미해결스프링 핵심 원리 - 기본편
회원 도메인 실행과 테스트 강의 8분 40초 질문입니다.
스프링 핵심 원리 이해1 - 예제 만들기 질문입니다.회원 도메인 실행과 테스트 강의 8분 40초에 memorymemberrepository가 추상화에도 의존하고 구체화에도 의존한다는게 무슨뜻인가요? 2.주문과 할인 도메인 개발 7분public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository=new MemoryMemberRepository(); private final DiscountPolicy discountPolicy=new FixDiscountPolicy();자바를 배울 때private final MemberRepository memberRepository=new memberRepository();이런식으로 객체도 같은 이름으로 생성해서 항상 그런줄알았는데 왜 memberRepository() 이게 아니라 MemoryMemberRepository() 이런식으로 되는건가요?implements와 extends차이점이 뭔가요? https://velog.io/@hkoo9329/%EC%9E%90%EB%B0%94-extends-implements-%EC%B0%A8%EC%9D%B4 여기서는class가 class를 상속받을 땐 extends를 사용하고, interface가 interface를 상속 받을 땐 extends를 사용한다. 이렇게나와있는데 이게 맞는거아요? 주문과 할인 도메인 실행과 테스트 1분public class OrderApp { public static void main(String[] args) { MemberService memberService = new MemberServiceImpl(); OrderService orderService = new OrderServiceImpl(); long memberId = 1L; Member member = new Member(memberId, "memberA", Grade.VIP); memberService.join(member); Order order = orderService.createOrder(memberId, "itemA", 10000); System.out.println("order = " + order); } }Long memberId=1L 여기서 1리터가 무슨 뜻인가요?public class Member { private Long id; private String name; private Grade grade;Member클래스에 grade로 변수 선언했는데요. grade가 소문자가 아닌 Grade.VIP 대문자로 되어있는데 왜이러는건가요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
MVC 패턴에서의 검증 책임이 누구에게 있는 지 궁금합니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요 MVC 패턴에 대해 생각해보다가 고민이 생겨 질문을 남겨봅니다! 강의를 보면 사용자의 입력값 내지 요청에 대한 입증 책임을 가지는 것은 Controller이고, 그 요청에 대한 비즈니스 로직에 관한 검증 책임은 Service쪽에서 가져간다고 보는 것이 맞을까요? 예를 들어 회원가입을 하는 상황이라고 할 때, "닉네임은 한글로만 이루어진다"라는 상황에서 닉네임을 영어로 쳤다고 가정하면 이에 대한 검증은 Controller, "회원 간 중복된 닉네임은 가질 수 없다"라는 상황에선 Service 쪽에서 한다고 보는 것이 맞을까요? 그렇다면... view에서 검증을 하면 안 되는 이유나 비효율적인 예를 하나 들어주실 수 있으실까요??