묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 시큐리티
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...