강의는 스프링 2.5버전대지만 현재 스프링 이니셜라이저에서 기본 지정 버전은 2.6버전입니다. 여기서는 CallServiceV1에서 사용한 setter에 @Autowired 붙이는 문법을 사용 할 시에는 생성자로 주입할 때랑 똑같이 순환참조냐고 묻는 오류가 발생하더라구요. 혹시나 싶어서 2.5.6으로 해보니 잘 되더랍니다...ㅠㅠ 갑자기 2.6.0버전부터 무슨 일이 생긴지는 모르겠지만 여기서는 안되네요 ㅠㅠ
이번 예제에서 내부 클래스인 static class DiscountSerive에 Map 타입과 List 타입의 멤버변수를 만들고 @Autowired를 설정해 보았습니다. 저는 출력결과가 수업강의에 있었던 예제 처럼 타입에 맞는 빈이 모두 출력될 것이라 기대했는데 결과물은 null이네요. 클래스 필드에서는 @Autowired를 사용할 수 없는것일까요? <코드> <결과물>
안녕하세요 현재 서로 믿을 수 있는 스타트업 멤버 구축 되었고 추가로 능력있고 참하신 개발자 팀원 두분 더 찾습니다. 관심있으신분 연락 부탁드립니다 1. 주제소개: 반려동물 서비스 중 현재 시장에 없는 서비스. 2. 현재 진행 단계: 시장분석 및 주제와 명확한 방향성까지 잡은 상태 3. 모집분야 및 주요업무: 앱 개발자-하이브리드 앱 (웹앱을 네이티브 형태로 감싼 형태) 유사사이트: https://www.pet-friends.co.kr/main/tab/2 4. 모집경력 및 필요스킬: 앱개발 관련하여 경력이 있거나, 최소 스프링을 자유롭게 다룰 수 있는 스킬 필요 vue.js 옵션 등 5. 참고기타사항: 기획/디자인/개발/마케팅 포지션 다 구성되어 있으나, 추가 개발자가 두분 정도 더 필요한 상황 6. 문의/연락: 010-4590-4917 배대근 카카오:antoniobae1 참고url:IT 웹 앱 마케팅 개발 창업모임 파랑새(Since 2021.10.02 : 네이버 카페 - http://naver.me/FIgA4x8x
response.sendRedirect( "/login?requestURL=" + requestURI) ; 이렇게 되어있는데 requestURL 이라는게 정확히 어떤것을 의미하는걸까요? 코딩을 할 때는 login?requestURL로 하면 원하는 페이지로 이동이 안되고 메인으로 이동되고 login?requestURI로 하면 원하는 페이지로 이동이 되네요.. sendRedirect를 할 때 requestURL로 하는것과 requestURI로 하는것에 차이가 있을까요? requestURL은 전체 주소를 가져오는것이고, requestURI는 도메인을 제외한 경로를 가져오는것으로 알고 있는데 갑자기 햇갈리네요.ㅠㅠ
1. 강의 내용과 관련된 질문인가요? (예/아니오) 아니요 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 안녕하세요. 영한님 강의 잘 정말 잘듣고있습니다. 아쉽게도 이번강의는 개인적인 일로 바빠서 결제만 해놓고 듣지는 못했지만요. 제가 개인프로젝트를 진행하다가, 스프링시큐리티를 도입할 일이 생겼는데, 정말 어렵더군요. 일단은 열심히 구글링해서 어찌어찌 잘 도입했는데, 너무 어려워서 한번 깊게 공부해야겠다는 생각이 들더군요. 본론으로 들어가서 혹시 스프링 시큐리티를 강의로 내실 계획이 있나요 계획이 있다면, 언제쯤 내실 계획인지 알 수 있을까요. 계획이 없다면, 다른 분의 스프링 시큐리티 강의를 수강하려고 문의 드립니다
안녕하세요 , 영한님! 강의잘듣고있습니다! 다름아니라 HandlerExceptionResolver modelAndView반환에 따른 정상흐름이 헷갈리는 부분이 있어서 질문남깁니다. HandlerExceptionResolver 를 구현하고, response.sendError(상태코드,에러메시지) return new ModelAndView(); 가 반환되면 정상흐름으로 설명주셨는데, 결국에 response,sendError를 사용하면 was에서 sendError 호출 기록을 확인하고, ErrorPage에 등록된 경로로 재요청하는 것이 아닌가요? 이를 정상흐름이라고 하는지 문의드립니다! 로그를 확인해보니 resolver에서 빈 modelAndView를 반환해도 errorPageController 에 재요청이 들어간것으로 보이는데 제가 잘못이해한것일까요 ㅠ 너무헷갈립니다!! 2021-11-18 20:39:48.287 INFO 15896 --- [nio-9090-exec-3] h.e.resolver.MyHandlerExceptionResolver : IllegalArgumentException resolver to 400 2021-11-18 20:39:48.288 INFO 15896 --- [nio-9090-exec-3] hello.exception.ErrorPageController : errorPage 404
session을 생성할 때 public void createSession (Object value , HttpServletResponse response){ //세션 id를 생성하고, 값을 세션에 저장 String sessionId = UUID. randomUUID ().toString() ; sessionStore .put(sessionId , value) ; //쿠키 생성 Cookie mySessionCookie = new Cookie( SESSION_COOKIE_NAME , sessionId) ; response.addCookie(mySessionCookie) ; } 이 소스에서는 sessionStore에 담아놓았는데.. 실제 운영을 할 때도 저렇게 ConcurrentHashMap에만 담아놓고 사용을 하나요?? 아니면 DB에 아이디와 세션값을 따로 저장을 할까요?? 어차피 새션값은 고유값이기는 하지만 일정 시간이 지나면 변경이 되는 값이라 굳이 DB에 테이블을 만들어서 저장을 하지는 않을 것 같은데 실제로 개발을 하고 운영을 할 때도 저렇게 ConcurrentHashMap에만 담아놓고 끝나는지, 아니면 DB까지 저장이 되는지 궁금합니다.
강의 정말 잘 듣고있습니다. intellij실행에서 막혔습니다. os는 mac이고, 강사님 따라서 intellij를 처음 다운로드해서 사용해봅니다. Error: Could not find or load main class Caused by: java.lang.ClassNotFoundException: 실행하면 이런에러가 발생하는데 이유가 무엇인가요 ? (main class 중에 제 프로젝트 내용이 나오지 않습니다.)
안녕하세요. 항상 양질의 답변 글을 달아주셔서 너무 감사합니다. 다름이 아니라 이전 강의를 복습하면서, 제가 궁금한 부분이 있어 질문 드리고 싶어 글을 적습니다. Bean Definition을 통해서 스프링 컨테이너에 등록되는 과정이 궁금한데, 한번 이런 흐름으로 가는데 틀린 부분이 없는지 봐주실 수 있을까요? 전체 흐름이 맞는지, 그리고 각 과정에서 잘못 알고 있는 부분은 없는지 한번 알려주시면 감사하겠습니다. 1. 스프링부트가 시작되면 @Configuration이 붙은 AppConfig 클래스를 자동으로 스캔해서 스프링 컨테이너에 넣는다 2. 스프링 컨테이너, 여기서는 ApplicationContext의 구현체인 AnnotationApplicationContext가 AppConfig.class 정보를 AnnotatedReader를 통해서 읽은 다음 @Bean이 붙은 Bean Definition을 만든다. 3. 만들어진 Bean Definition을 AnnotationApplicationContext에서 읽어서 빈 객체를 생성해서 내부 빈 저장소에 저장한다. 이 때, 각 메서드는 @ComponentScan에서 생성자 주입과는 다르게 동작한다 (생성자 주입은 빈 객체를 생성하면서 의존관계 주입 설정 완료) 4. 의존관계 주입 단계에서 각 Bean Definition을 참고해서 Bean 간의 의존 관계를 설정해준다. 이 때, 생성 방식은 Bean Factory Interface의 구현체인 AnnotationContext로 했기 때문에 Bean Factory Method 방식으로 Bean Definition이 생성되었다. 앞뒤 내용을 조합해보면, 이렇게 될 것 같은데.. 혹시 틀린 부분이 없을지 같이 한번 봐주실 수 있으실까요? 항상 많은 가르침 주셔서 너무 감사합니다.
강의 내용중, SSR은 서버단에서 동적으로 HTML생성해서 타임리프를 통해서 만들어 웹브라우저로 뿌려주고, CSR은 자바스크립트 요청을 하여 서버단에서 관련 데이터들만 뿌려주고 웹 브라우저 자체에서 자바스크립트를 통해 HTML결과를 렌더링 한다고 인지하였습니다. 그런데 13:50정도의 내용에서는 SSR은 정적인 페이지, CSR은 동적인 페이지에서 사용된다고 하셨습니다. (여기서 질문입니다) 1. 제가 인지한 정적페이지는 정말 사용자마다의 정보없이 모든사용자에게 똑같이 내려줄법한 페이지를 의미하고 동적페이지는 사용자마다 정보다 다르기에 DB를 통해 가져와 동적으로 자용자마다 큰틀은 비슷하지만 정보표시 자체가 다르게 되어서 동적페이지라고 인지하였습니다. 맞나요? 2. 저같은 경우 UI를 비쥬얼 스튜디오 코드 같은곳에서 이쁘게 꾸민후 해당 프론트코드 와 인텔리제이에서 만든 백앤드 코드를 합치고싶은데 이럴땐 어떻게 연동을 해주나요? 3. 또한 저는 개인 프로젝트를 할때 리엑트 같은 CSR기술을 사용해보려고 하는데, 이럴땐 리엑트로 HTML렌더링 웹사이트를 만들어준후, 정보를 작업하는 백엔드쪽은 인텔리제이같은 툴을 이용하여 데이터를 만든후 제가 만든 리엑트 웹사이트에 뿌려주게 되는건가요? 방식이 궁금합니다.
현재 강의에서 AppV1Config클래스를 스프링빈으로 등록하기 위해 @Import(AppV1Config.class)코드를 넣어줘야한다고 알려주셨습니다. 그런데 예전강의에서 @Configuration안에는 @Component가 선언되어 있어 해당 클래스는 자동으로 스프링빈으로 선언된다고 알려주셨는데요!! 그렇다면 @Import(AppV1Config.class)코드가 없이 @SpringBootApplication(scanBasePachages)가 지정되어 있지않다면 AppV1Config클래스는 자동으로 스프링빈으로 등록되는게 맞나요??
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] <script th :inline ="javascript" > 1번) var username = [[${user.username}]]; // 자바스크립트 내추럴 템플릿 2번) var username2 = /*[[${user.username}]]*/ "test username"; </script> 위 내용에서 내추럴 템플릿을 쓰는 이유가 궁금합니다. 1번)처럼 그냥 넣어줘도 userA가 나올텐데, 굳이 /* */ 이렇게 사용하고, 뒤에 "test username" 이라는 값을 넣어야 하는 이유가 따로 있는지 궁금 합니다. 어차피 인라인 자바스크립트이고 결과값이 같은 값이 나올텐데.. 2번처럼 사용하는 때가 따로 있는지 궁금합니다.
안녕하세요. 도메인 주도 모델을 공부하면서 강의를 복습하고 있습니다. 비즈니스 로직이 Entity 객체에 들어가는 이유 등은 조금씩 이해가 가고 있는 중입니다. 그런데 제가 경험이 없다보니 이론서와 예제를 비교하다 보니까 다른 점이 몇 가지 있어서 실제로는 반드시 이론대로 사용하는 것은 아닌가? 라는 생각도 들고 학습을 위해서 간단히 만드신 건가 잘 모르겠어서 질문드려봅니다. 도메인 주도 설계 아키텍쳐를 보면 1 프레젠테이션 계층 2 애플리케이션 계층 3 도메인 계층 4 인프라스트럭처 계층 이렇게 나누어진다고 하는데요. 여기서 1 프레젠테이션 계층이 MVC이고 영상에서 나오는 controller domain service는 3 도메인 계층으로 보입니다. 그런데 2 애플리케이션 계층은 보이지 않고 애플리케이션 계층이 와야 할 자리에 도메인 계층이 있는 것처럼 보입니다. 예를 들면 도메인 객체인 Entity나 Repository가 Controller에서 사용되고 있습니다. 이론서를 보면 컨트롤러에서는 도메인 계층의 구현을 알지 않는 것이 좋으며, 모든 도메인 계층에 대한 호출은 어플리케이션 계층 안에서(ex entityApplicationService Class 안에서) 이루어지는게 좋다고 하더라고요. 실무에서도 예제처럼 어플리케이션 계층을 생략하고 할 때가 많나요? 아니면 강의에서는 학습용으로 생략이 된 것인지 제가 무언가 간과하고 있는 부분이 있는지 궁금해서 이렇게 질문드리게 되었습니다.
항상 좋은 강의 감사합니다! 덕분에 실력이 많이 오름을 느끼고 있습니다. 궁금한 것은 애초에 boot-starter-aop을 적용하기 전에, 스프링 컨테이너에 빈들을 등록할때 이들을 프록시 처리해서 등록하는 것으로 알고 있습니다. (싱글톤 처리를 위해서) 이때, boot-starter-aop 모듈을 적용하면 이러한 역학 과정(?)에 어떤 과정이 들어가는지 궁금합니다. 일단 포인트컷 대상이 되는 클래스는 한번 프록시에 감싸주고 이후 스프링에서 빈으로 등록할 때 싱글톤 처리를 위해 한번 더 프록시를 감싸주는 식으로 최종 빈 등록이 되는 것일까요?
안녕하세요. 좋은 강의 만들어주셔서 감사합니다. 아래와 같이 강좌와 유사하게 spring.datasource.hikari 로 mysql 설정을 한 후 간단한 job 을 실행시키면 docker 로 설치한 mysql db 가 죽는 현상이 있습니다. 혹시 hikari 설정이 부족해서 그런 것일까요? 강좌에서는 잘 진행이 되는것 같아서 질문드립니다. 그래서 주석 처리하고 기존에 하던 방식으로 spring.datasource 를 이용해서 mysql 설정을 했습니다. spring.datasoruce 는 datasource 설정인거 같고, spring.datasource.hikari 는 hikari connection pool 설정인거 같은데요. 헷갈리네요. 어디에 db 설정을 정의하는것이 기본일까요? spring : profiles : active : local --- spring : config : activate : on-profile : local datasource : # hikari: # jdbc-url: jdbc:mysql://av-api01-dc.nfra.io:23306/aida_project?useUnicode=true&characterEncoding=utf8 # username: root # password: root # driver-class-name: com.mysql.cj.jdbc.Driver url : jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8 username : root password : root driver-class-name : com . mysql . cj . jdbc . Driver batch : jdbc : initialize-schema : always