묻고 답해요
129만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 고급편
JDK 동적 프록시와 기본 생성자
안녕하세요 영한님!! (또는 서포터즈님!!) 강의를 예전에 들은 후 복습을 하다가 한 가지 의문점이 생겨서 찾아보다가 명확하지가 않아서 질문을 드립니다!!JDK 다이나믹 프록시로 동적 프록시를 생성할 때 자바 리플렉션 기반으로 프록시를 생성하는 것으로 알고 있습니다. 추가적으로 리플렉션을 사용하기 위해서는 기본 생성자가 필수로 있어야 하는 것으로 알고 있습니다.하지만 JDK 다이나믹 프록시 같은 경우는 리플렉션을 사용함에도 기본 생성자 없이 프록시를 만드는 것으로 보였습니다.제가 뭔가 놓치고 있는 지점이 있는 것 같은데, 어떤 부분을 잘못 생각하고 있는걸까요 ㅎㅎ..매번 좋은 강의 감사합니다.
-
미해결스프링 시큐리티
SecurityResourceService 에서 JPA proxy 관련 질문이 있습니다!
안녕하세요 강사님! 좋은 퀄리티의 Security 강의 제공해주셔서 감사드립니다.[실전프로젝트 - 인가 프로세스 DB 연동 웹 계층 구현]5) 웹 기반 인가처리 DB 연동 - FilterInvocationSecurityMetadataSource (2)수강하면서 생겼던 질문이 있습니다.// val resourcesList = resourcesRepository.findAllResources() val resourcesList = resourcesRepository.findAll()강사님께서 미리 만들어두셨던 findAllResources 메소드를 통한 JPQL로 fetch하지 않고 Spring DataJPA 기본 findAll 메소드로 resources 리스트 가져와서 Role의 roleName을 LinkedHashMap에 넣었습니다.(해당 서비스 클래스의 getResourceList 메소드에는 @Transactional 걸어둔 상태입니다.)그렇게 하니까 다음과 같은 에러가 발생했었습니다.failed to lazily initialize a collection of role: io.beaniejoy.coresecurity.domain.entity.Resources.roleSet, could not initialize proxy - no SessionResources 엔티티에 @ManyToMany로 roleSet에 fetch 모드를 LAZY로 걸어둔 상태여서 저는 lazy한 방식으로 proxy를 통해 role.getRoleName() 할 때 role_resources, role 두 테이블로 조회쿼리 날라가면서 잘 가져올 것이라 생각했었는데요. 왜 proxy를 initialize 하지 못했는지, resources를 findAll할 때 결국 fetch join으로 가져올 수 밖에 없는 것인지 궁금했습니다.(제가 JPA를 잘 알지 못하여 죄송합니다.)
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Proxy 객체의 이점? 사용이유?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 안녕하세요. 아래 두 가지의 배경지식으로 질문드리고자 합니다. 1. 프록시 객체가 실제 Entity의 연관된 Entity가 필요하지 않을 때, 굳이 연관된 Entity까지 생성하지 않고 Proxy 객체로 대체함으로써 최적화에 도움 2. 연관된 Entity가 필요하게 될 경우, Proxy가 영속성 컨텍스트에 초기화 요청을 하고, 영속성 컨텍스트가 DB에 조회하여 실제 Entity를 생성하고, Proxy 객체의 target과 실제 Entity 객체가 연결되어 사용 질문, 1. 09:08~11:30 getReference 호출 시 - Proxy 생성 findMember.getId - Parameter로 값 입력해서 DB 조회 필요 x - Proxy 객체의 장점 발휘 findMember.getUsername() 호출 시 - 실제 DB Data 호출 시 - 실제 Entity 생성(Query 생성) 2. 예제처럼 결국 실제 Entity 객체가 생성된다면, Proxy와 실제 Entity 두 개가 생성되면서 메모리를 더 잡아 먹는 것이 아닐까요? 3.실무에서 파라미터로 넘어온 값을 저장하여 실제 DB에서 조회할 일이 없을때 장점라면, 예제이기 때문에 한 transaction 안에서 Proxy와 DB 를 조회하는 것을 보여준 것이고, 예제처럼 Proxy, Entity 둘 다 만들어진 상황이라면 이때는 장점이 아닌게 맞는걸까요? 4. 그것도 아니라면 Proxy 객체가 생성되고 실제 Entity 객체가 생성 전까지, 그 사이에서 얻는 최적화가 장점인걸까요? 프록시 객체를 사용시의 장점을 명확히 잘 모르겠습니다.. 강의를 몇 번을 돌려봐도 잘 이해되지 않아 질문 드립니다. 너무 기초적인 질문이라도 양해 부탁 드립니다 :( 감사합니다.
-
해결됨스프링 핵심 원리 - 고급편
이번 예제에서 Config 클래스에 @Configuration 을 적용하니, Proxy 래핑/등록이 안되는것 같습니다.
강사님 안녕하세요.저는 지금 예제 구현시 의도와 다르게 약간 틀린 설정으로 생긴예상밖의 결과로 약간 혼동을 겪고있습니다. 이유는 @Configuration 을 실수로 붙였더니, 아래와 같이Proxy 가 적용되지 않은 결과가 나옵니다. Config 클래스에 아래와 같이 @Configuration 선언시 @Configurationstatic class Config { ... ...} child.childMethod(); 실행 후 로그 메세지: child Proxy=class ...AtTargetAtWithinTest$Child(Proxy 적용이 안된 스프링 빈 출력) child.parentMethod(); Parent 는 프록시 처리가 되지 않아 출력되지 않음 관례처럼 사용해오던 @Configuration 을 지우니 강의 예제결과처럼 정상으로 나옵니다.(@Import 를 통해 Config 추가 상태) Aspect 를 빈으로 등록해도 Proxy 변환이 안되는 이 상황이 이해가 되지 않아 부득이하게 질문을 남기게 되었습니다. 질문입니다. 예전 강의에서 @Configuration 은 등록되는 빈 을 대상으로 싱글톤 후처리를 위해 선언되는 것이라 알고있었습니다.( CGLIB 을 통해 프록시 후처리), 그래서 Aspect 가 당연히 적용될 줄 알았는데 @Configuration 을 붙이니,Proxy 처리가 되지 않더라구요. 아래는 두가지 결과 입니다. @Configration Config @Import(Config.class) @Configuration 선언 시, Proxy 후처리가 되지 않는 기묘한 현상에 대한 이해가 잘 되지 않습니다.이런 이유로 Config 클래스에 @Configuration 을 쓰지않고, @Import 로 추가하신 이유가 궁금합니다. 읽어주셔서 감사드립니다.
-
미해결스프링 핵심 원리 - 고급편
AspectJ의 AOP 구현방식에 대해 질문드립니다.
1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 영한님 안녕하세요! Spring AOP는 프록시 기반으로 타겟과 aspect를 weaving해서 프록시 객체가 생성된다고 이해했습니다. 그렇다면 또다른 AOP 프레임워크인 aspectJ는 어떤 방식으로 aspect를 타겟에 적용하고 있나요? AspectJ가 적용된 코드에 final을 붙여 실행시켰을 때 오류가 나는 것으로 보아 아마 프록시로 래핑된 객체를 생성하지 않을까 추측이 되는데 확실치 않아 여쭤봅니다. 짜임새 있는 강의 준비해주셔서 항상 잘 듣고 있습니다. 고맙습니다!
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
proxy를 사용할때와 사용하지 않을때 img 태그의 차이점?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. // // // 안녕하세요. 저는 이 강의를 들을때 boiler plate를 쓰지 않았습니다. 그냥 혼자서 만든 boiler plate에 사용하고 있습니다. 저는 module에서 proxy값을 설정하지 않고, 그냥 cors 설정을 통해서 클라와 서버간에 통신을 시켜주고 있는데요. 궁금한점은 <img src={`http://localhost:5000/${image}`}></img> 이 부분입니다. 즉, 위 img테그는 get요청을 http://localhost:5000/uploads/이미지파일.jpg 위의 경로 보내게 됩니다. 그런데 저는 도통 이미지가 출력이 되지 않더군요. 그 이유가 혹시 proxy 설정을 해주지 않아서인가요? 즉. proxy설정을 하게되면, http://localhost:5000/uploads/이미지파일.jpg 이 경로로 브라우저에서 enter를 치면 이미지파일이 보이나요? 저는 cors설정을 해서 그런지 http://localhost:5000/uploads/이미지파일.jpg 크롬에서 저 주소값을 enter를 치면 이미지파일이 보이지 않앗습니다. 그래서 fs.readfile을 써서 이미지파일을 읽어올수있게 바꿔서 설정했거든요. 음...proxy가 도대체 어떤 역할을 하길래, img파일가지 다 읽어주는지 궁금해서 질문드려봅니다.
-
미해결Slack 클론 코딩[실시간 채팅 with React]
웹팩데브서버 proxy관련 질문드립니다.
안녕하세요, 제로초님 백엔드 서버가 localhost가 아니고 dev-abc.com 이렇게 실제 서버가 있는 경우에는 proxy 대신에 어떻게 하면 웹팩 데브 서버를 서버와 연동시킬 수 있을까요? 우선 찾은건 서버측에 access-controll-allow-origin를 모두 허용으로 해놓으면 된다고 하는데 지금 이 방법으로도 안되는 상황인지라 혹시 이러한 상황에서 실무에서는 어떻게 웹팩 데브 서버 개발환경을 구축하는지 궁금하네요. 현재는 webpack --watch 변경 사항을 감지하면서 개발하는데 이건 빌드 시간이 너무 오래걸리네요..ㅜ
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
proxy 설정하다 생긴 다른 warnning 물어봅니다.
안녕하세요. 수업 항상 잘 듣고 있습니다. :) 다름이 아니라 수업을 따라 하던 중 궁금증이 생겨 질문합니다. 1. proxy설정을 한 후 데이터 값이 나오는데, 저는 send값으로 넣은 안녕하세요. 만 나오는데요. 이번에 createProxyMiddleware이 바뀐 것과 관련이 있을까요? 2. 그리고 또다른 문제점이 발생했는데요. scheduler.development.js:298 [Deprecation] SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. 라는 콘솔창에 warnning이 나왔습니다. 이 부분은 우연히 해당 링크 타고타다가 다른 해결점을 찾긴 했는데요. src > public > index.html값에 <script> if (! crossOriginIsolated) SharedArrayBuffer = ArrayBuffer </script> 이 값을 넣었더니 해결 되었습니다. 앞으로 배포나 그 외에 수업에 지장이 없겠죠??? 혹시 몰라 해당 링크도 공유하겠습니다. https://github.com/facebook/react/issues/20829
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
로그인 액션 디스패치할때 프록시 서버가 적용이 안되여
안녕하세요~!질문이 있습니다. 로그인 액션 디스패치할때 프록시 서버가 적용이 안되서여 기본 페이지에서는 프록시 서버가 적용되는데 로그인 액션 디스패치시에 적용이 안되는데 뭐가 잘못된건지 잘모르겠어서여 알려주실수 있나여? 깃허브: ============================================= 프록시 설정: https://github.com/.../blob/master/client/src/setupProxy.js 기본 페이지: https://github.com/.../views/LandingPage/LandingPage.js 로그인 페이지: https://github.com/.../client/src/components/views/LoginPage 액션 함수: _actions/user_action.js: https://github.com/.../client/src/_actions/user_action.js=========================================== stack over flow: https://stackoverflow.com/.../an-error-occurs-in-the...