묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
프록시 캐시 서버를 만드는 이유 질문
왜 프록시 캐시 서버를 전세계에 놓는 건가요? 예를 들어 블로그 서비스라고 하면, 그냥 원본 데이터인 블로그 글 데이터 자체를 전세계 서버에 복사해서 놓으면 되지 않나요? 왜 데이터를 캐시로 만들어서 프록시 캐시 서버를 만드는 건지 궁금합니다. 원본 데이터(블로그 글)과 캐시에는 어떤 차이가 있는 건가요?
-
미해결Node.js로 웹 크롤링하기
프록시 서버 연결 문제
이전 질문에도 있었는데 프록시 서버 연결이 안되는데 혹시 이유가 무엇일까요?코드를 그대로 작성해서 하여도 접속이 안되네요.ip를 1~2개가 아니라 10개 이상을 다른 것들로 해봤는데도 안되서 프록시 서버의 문제보다도 다른 문제가 있는 게 아닐까 싶어서요.(이전 문제들에 답변에는 다른 프록시 서버를 써보라고 하셔서 10개 이상 시도를 해본 뒤 질문드립니다(다른 사이트의 프록시 서버도 사용해보았습니다). 포트번호를 넣어서도 해보고 빼보고도 해보고 http도 붙여보고 별 난리를 다 해봤네요)감사합니다.+) 결과 화면감사합니다.
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
synchronized 키워드 후 테스트 실패나는 이유
안녕하세요. 실패하는 이유를 간략하게 설명하셨는데 그 이유가 혹시 스프링의 aop 동작인 proxy 때문인가요?저는 트랜잭션을 지우면 값이 decrease 되지 않고 100이 됩니다.트랜잭션이 없기 때문에 100이 되어야 하는거 아닌가요?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
프록시를 이용한 연관관계 설정 시 잘못된 id값을 받았을 경우에 대해 질문드립니다!
단순히 연관관계 설정을 위해 엔티티를 사용하는 경우, 프록시로 조회(em.getReference || Data JPA의 경우 getById()) 형태로 조회한다고 알고 있습니다. 연관관계 설정을 위해 필요한 값은 id뿐인데, 굳이 엔티티의 다른 필드 정보까지 조회하기 위한 쿼리를 날리지 않는 편이 좋으니까요. 이 점과 관련해서 동료들과 이야기를 나누던 중 얘기가 나왔었는데, - 위와 같은 방식으로 연관관계를 맺을 경우 id값이 잘못된 값일 때 문제가 발생한다. 는 이야기를 들었습니다. 제 생각에는 정확한 id값 전달의 경우 id값을 전송하는 쪽의 책임이고, 그런 일이 나올 경우에 대비하는 것에 비해 프록시를 이용해서 조회 쿼리를 한 번 절약하는 이득이 더 크다고 생각했습니다. 하지만 방어적 코드를 작성하는 편이 좋다라는 측면에서 동료들의 말에도 일리가 있어서 고민이 되었습니다. 현업에서도 프록시를 이용해 연관관계를 맺는 방식을 사용하실 것 같은데, 위 경우에 대해 어떤 방식으로 별도의 처리를 해주시는지, 이 문제에 대해 어떻게 생각하시는지 궁금합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
값 타입 컬렉션 addressHistory, favoriteFood 조회시 select 쿼리 관련 질문
addressHistory는 조회하기 위한 select 쿼리가 날아가는데, favoriteFood는 select 쿼리가 날아가지 않는 이유가 궁금합니다.
-
해결됨스프링 핵심 원리 - 고급편
컨트롤러에 프록시를 적용하는경우
프록시 객체같은 경우에는 RestController 혹은 RequestBody같은 어노테이션을 달수없텐데 어떻게 http request 객체가 프록시 controller객체에 가장먼저 들어가게 되나요?? 프록시가 없을때는 RestController 어노테이션때문에 컨트롤러로 request객체가 가장 먼저 들어온다고 생각했는데 프록시가 생기면 어떤 원리로 프록시 컨트롤러 객체로 request가 들어오는지 궁금합니다
-
미해결자바 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 객체가 생성 전까지, 그 사이에서 얻는 최적화가 장점인걸까요? 프록시 객체를 사용시의 장점을 명확히 잘 모르겠습니다.. 강의를 몇 번을 돌려봐도 잘 이해되지 않아 질문 드립니다. 너무 기초적인 질문이라도 양해 부탁 드립니다 :( 감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
프록시 관련해서 질문이 있습니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]영한님 안녕하세요. JPA로드맵, 스프링 로드맵 모두 들으면서 기초 개념을 잡아가고 있습니다. 감사합니다. 다름이 아니라, 학습을 하면서 프록시 객체의 개념이 많이 등장하는데요, 이런 프록시 객체에 대해 궁금한 점이 생겨서 질문드립니다. 스프링이 빈을 싱글톤으로 관리하기 위해 CGLIB 바이트코드 조작을 통해 가짜 프록시 객체를 스프링 빈으로 등록한다고 알고 있습니다. 그리고 스프링 AOP 적용 시에, Pointcut의 대상이 되는 객체(pointcut 대상 메서드가 포함된 객체)에 Advice를 적용하기 위해 CGLIB 또는 JDK 동적 프록시 기술로 프록시 객체를 만든다 배웠습니다. 마지막으로 여기서 JPA에서 지연로딩을 하기 위해 가짜 프록시 객체를 생성하고 실제 프록시 초기화 시점에 DB에서 쿼리를 불러온다고 보았습니다. (--> 이 프록시 객체는 영속성 컨텍스트가 시작될 때 생성되었다가 사라지는 것 같긴 합니다..) 실제로는 더 많은 사례가 있겠지만, 일단 제가 알기로는 이렇게 3가지가 있었던 것 같은데, 이때 생성되는 프록시 객체들은 다 별개의 객체들일까요? 예를 들어 싱글톤 빈으로 등록된 객체가 있는데(CGLIB 프록시), 이 객체가 AOP 적용 대상이라면 CGLIB 혹은 JDK 동적프록시를 통해 또다른 프록시 객체가 생성되는 건지 궁금합니다. 추가로, 지연로딩을 위한 프록시 객체는 영속성 컨텍스트가 시작될 떄 생성되어 영속성 컨텍스트가 종료되면 사라지는 것인지 궁금합니다. 질문이 다소 모호해서 죄송합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
실제 Proxy 주입 확인에 대해 질문있습니다.
/* MemberController*/ @Autowired public MemberController(MemberService memberService) { this.memberService = memberService; System.out.println("memberService = " + memberService.getClass()); // 프록시 조회해보기 } /* MemberService*/ public MemberService(MemberRepository memberRepository) { this.memberRepository = memberRepository; System.out.println("memberRepository = " + memberRepository.getClass()); // 프록시 조회해보기 } 안녕하세요! 프록시 조회에 대해서 질문드립니다!! 프록시를 조회하고 싶어서 print문을 써봤습니다.그런데 MemberService 프록시는 MemberController 생성자에 print문을 작성해주고 MemberRepository 프록시는 MemberService 생성자에 print문을 작성해주어 확인했는데, MemberController 프록시는 어디에 print문을 작성해서 확인해야 하나요? 두번째 질문은 출력 순서를 보면 1. AOP START 다음 2. 레포지토리가 출력되고 3. END 출력 4.그 다음에 서비스 프록시가 출력되는데, 순서가 왜 이렇게 되는지 궁금합니다. 스프링을 실행시키면 어떤 부분이 가장 먼저 실행되나요?? AOP START가 가장 먼저 출력되는 걸 보니 TimeTraceAop가 실행되고 그 다음에 MemberService가 실행되는 것인가요..?? 작동되는 순서를 전혀 모르겠습니다ㅠㅠㅠ SpringConfig이 먼저 실행되어 START에 SpringConfig.memberSerivce 메소드가 찍히는 것인가요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
프록시 질문 있습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 코드1 package hellojpa;import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.EntityTransaction;import javax.persistence.Persistence;public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try{ Member member=new Member(); member.setUsername("hello"); em.persist(member); em.flush(); em.clear(); Member refMember = em.getReference(Member.class, member.getId()); //refMember.getUsername(); refMember.getClass(); em.detach(refMember); System.out.println("refMember.getUsername() = " + refMember.getUsername()); tx.commit(); } catch(Exception e){ tx.rollback(); e.printStackTrace(); }finally { em.close(); emf.close(); } }} 코드2 package hellojpa;import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.EntityTransaction;import javax.persistence.Persistence;public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try{ Member member=new Member(); member.setUsername("hello"); em.persist(member); em.flush(); em.clear(); Member refMember = em.getReference(Member.class, member.getId()); refMember.getUsername(); //refMember.getClass(); em.detach(refMember); System.out.println("refMember.getUsername() = " + refMember.getUsername()); tx.commit(); } catch(Exception e){ tx.rollback(); e.printStackTrace(); }finally { em.close(); emf.close(); } }} 강의에서 설명해주신대로 코드1에서는 LazyInitializationException:could not initialize proxy가 발생했습니다 하지만 제가 기존코드를 약간 변경한 코드2에서는 에러가 발생하지 않고 refMember.getUsername()=hello가 출력되었습니다. 코드2에서 에러가 발생하지 않고 출력이 되는 이유를 생각해보았고, 제가 생각한 것이 맞는 것인지 알고 싶어 질문을 남겼습니다. 코드1 은 프록시 객체가 초기화되지 않은 상태에서 detach로 준영속 상태로 바뀌었고 이후 refMember.getUsername()을 호출해도 프록시의 target이 실제 entity를 가리키지 않아서 에러가 뜬다고 이해했습니다. 코드 2는 detach되기 전 refMember.getUsername()을 통해 프록시 객체를 초기화해주어 영속 컨테이너가 관리중인 실제 entity 객체를 가리키게 해주었고, detach로 프록시 객체를 준영속 상태로 바꾸어도 프록시 객체는 실제 entity객체를 가리키고 있어 username을 찾을 수 있기 때문에 refMember.getUsername()=hello를 출력했다고 생각했습니다. 제가 생각한 것이 맞는지 궁금해서 질문드렸습니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
초기화 시점이 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]"em.getReference()를 한시점에서 영속성 컨텍스트에 엔티티가 없다면 엔티티를 db에서 조회하여 영속성 컨텍스트에 저장하고 프록시의 target에 실제 엔티티를 가리키게 한다" 가 제가 이해한 부분인데요 이게 맞다면 em.getReference()를 한 후 getName()과 같은 함수를 호출했을 때 em.getReference() 한 시점이 프록시가 초기화 된것인가요 아니면 getName()을 한 시점이 초기화 시점인가요?
-
미해결스프링 핵심 원리 - 고급편
AspectJ의 AOP 구현방식에 대해 질문드립니다.
1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 영한님 안녕하세요! Spring AOP는 프록시 기반으로 타겟과 aspect를 weaving해서 프록시 객체가 생성된다고 이해했습니다. 그렇다면 또다른 AOP 프레임워크인 aspectJ는 어떤 방식으로 aspect를 타겟에 적용하고 있나요? AspectJ가 적용된 코드에 final을 붙여 실행시켰을 때 오류가 나는 것으로 보아 아마 프록시로 래핑된 객체를 생성하지 않을까 추측이 되는데 확실치 않아 여쭤봅니다. 짜임새 있는 강의 준비해주셔서 항상 잘 듣고 있습니다. 고맙습니다!
-
미해결스프링 핵심 원리 - 고급편
구체 클래스 기반 프록시 예제2
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (아니오)[질문 내용 : 2분11초~] 이 케이스에서는 TimeProxy가 ConcreteLogic를 상속했기 때문에 이미 ConcreteLogic에 대한 정보(super)를 갖고 있는 것으로 보이는데, 멤버변수에 ConcreteLogic를 추가하신 의도가 있으신 건가요? 인터페이스를 사용할 때에는 손뼉을 쳤지만 구체 클래스 기반 프록시를 보니까 갑자기 위화감이 들어서 질문 드립니다....
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
프록시와 영속성 컨텍스트 스냅샷
안녕하세요 김영환님! 프록시가 영속성 컨택스트에 의해 관리되고, 동일 트랜잭션에서는 영속성 컨텍스트 내에 동일성을 위해 엔티티는 프록시에 저장된다는 답변을 보고 질문을 남깁니다. 저는 그래서 1차 캐시에 프록시가 저장이 되고 (id는 동일하므로) 실제 엔티티 객체는 1차 캐시에 직접적으로 저장되기 보다는 프록시에 저장(래핑) 되는 형태로 이해했는데요. 그렇다면 스냅샷은 어떻게 관리되고, 더티체킹은 어떻게 되는지 궁금합니다. 프록시와 감싸여진 실제 엔티티 모두가 스냅샷이 저장되나요? 더티체킹은 어떻게 진행되나요??? 추가적으로 프록시의 id는 getReference()를 호출하면서 입력해준 id가 되는데 이때 id가 db 상에 존재하지 않는다면 초기화때 어떤 예외가 발생하는지도 궁금합니다. 좋은 강의 감사합니다!!
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
프록시 관련한 equals()오버라이딩, 제가 이해한 것이 맞나요?
덕분에 스프링, JPA 말고도 자바 전반에 걸쳐서 정말 많은 걸 재밌게 배우고 있어서 감사드립니다. 공부를 해도 의문이 해소되지 않는 부분이 있고, 제가 이해하는 것이 맞는지 확신이 안 가는 것들이 있어 질문드립니다. 1. 왜 2:23초 정도의 equals() 오버라이딩에서, 클래스 비교를 instance of가 아니라 !=로 하였는지 프록시로 생성된 객체는 원본 클래스를 상속한, 생성된 클래스에 속하기에 equals 오버라이딩 할 때, ==이나 !=를 이용한다면 적절한 구현이 이루어질 수 없지 않나요? 1) 기본적으로 instance of를 써야 프록시로 생성된 객체가 원본 클래스와 적절하게 동등성 비교가 가능하다고 알고 있었습니다. 2) 한편, 실전예제에서 instance of를 사용하지 않은 것이 값 타입이라서 그런것이 아닌가 추측했습니다. 왜냐면 값 타입은 식별자를 갖지 않기 때문에 getReference() 메서드로 프록시를 가질 일 자체가 없어서 위의 문제가 발생하지 않으리라는게 제 추측이었습니다. 이와 관련해서 의문이 들었던 부분이: 2. 이전 강의(값 타입 컬렉션)에서 값 타입 컬렉션에 대해 값 타입 컬렉션을 매핑하는 테이블은 모든 컬럼을 묶어서 기본 키를 구성해야함: null 입력X, 중복 저장X 이라고 정리했었는데, 그렇다면 값 타입 컬렉션의 경우 PK가 존재하는 것인가요? 또, 그걸 통해서 find나 getReference가 가능한 건가요? 별개로, 값 타입이 불변 타입으로 사용되기에 equals 오버라이딩이 필요하다는 점은 이해했습니다. 마지막으로 3. getter를 사용해서 equals나 hashCode 메서드를 구현하는 것이 프록시 문제를 피해갈 수 있다는 것이 이해가 가지 않습니다. 오히려 저는 getter 사용이 아니라 클래스 판별 부분을 ==로 하지 않고 instance of로 하는 것이 더 맞다고 생각했습니다. 그 이유는 1) 제가 보기에, 위에서 언급했듯이, 프록시가 비교에서 문제가 발생하는 부분은, 프록시로 얻은 객체는 원본 객체와는 다른 클래스(JPA에 의해 생성된, 원본 클래스를 extends 하는 클래스)라는 점이기에 그렇습니다. 2) getter 사용이 아니라 instance of 사용이 프록시와 연관이 있다고 IntelliJ가 안내문으로말해주는 것 같아보였습니다. 단축키로 equals와 hashCode 메서드를 생성하려고 하면 다음과 같은 안내문이 나왔었는데요: generate equals() and hashCode() Accept subclasses as parameter to equals() method While generally incompliant to Object.equals() specification accepting subclasses might be nessesary for generated method to work correctly with frameworks, which generate Proxy subclasses like Hibernate. 생성된 메서드를, 하이버네이트처럼 프록시 서브클래스들을 만드는 프레임워크들과 호환시키고 싶으시다면, 일반적인 Object.equals() 규격과 다르게, 서브클래스들을 포함시키는 것이 필요할 수 있습니다. Use getters during code generation 해당 클래스에 getter 만들지 않으면 당연히 위 옵션을 체크하더라도 getter 메서드 사용하지 않고 구현된다. 제가 잘못 번역한 것인지는 모르겠습니다만 위의 안내문은 제가 위에서 생각했던 것처럼 서브클래스를 포함시키는 것 (!=으로 동등 클래스만 포함시키는 것이 아니라 instance of로 서브클래스까지 포함시키는 것) 이 하이버네이트 등의 프록시 서브클래스 문제를 해결해준다고 말하는 것 같았기 때문입니다. 공부가 얕아서 질문이 많았습니다. 하이버네이트에서 실제 프록시를 생성하거나 할 때 무언가 제가 모르는 부분이 있는 것은 아닌가 해서 하이버네이트 라이브러리에서 em을 extends 하는 Session이나 SessionImpl을 뒤져 보기도 했는데, 도통 답을 찾기가 어렵네요. 도움이 필요합니다..
-
미해결스프링 핵심 원리 - 기본편
SingletonWithPrototype에서 Provider 대신 프록시 사용
이전 강의에 싱클톤 빈(ClientBean)안에 PrototypeBean이 있는 예제에서 프로바이더 대신 프록시로 해봤는데, 프로토타입빈의 addCount()메소드를 타지 않아 count가 계속 0으로 나오더라구요 프록시로 해결할 수 있는 경우가 있고 ObjectProvider로 해결해야하는 경우가 따로 있나요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
프록시와 컨테이너의 동작 원리
안녕하세요 강의 정말 유익하게 잘 들었습니다 선생님 덕분에 개발의 재미를 다시 찾았습니다 감사합니다! 다름이 아니라 조금 쓸데 없는 의문점이 생겨서 질문드립니다 10:57분에 프록시를 실행한 후에 '진짜를 호출해준다'고 하셨는데, 그게 무슨 의미인지 구체적으로 알고 있습니다. 컨트롤러가 프록시 서비스를 받았다가 진짜 서비스를 새로 주입받는 건가요? 아니면 그냥 컨테이너 같은게 서비스의 메소드만 실행해주는 건가요? 컨테이너의 모습이 너무 복잡해서 어떻게 동작되는 건지 알고 싶었습니다. 감사합니다 너무 재밌어서 모든 강의 완강하겠습니다!
-
해결됨리액트로 나만의 블로그 만들기(MERN Stack)
client package.json 쪽 질문 입니다
프록시의 포트를 8080으로 두는 이유가 뭔지 알 수 있을까요? 그리고 호스팅 서버 쪽에서는 env 파일 안에 포트를 80으로 둔걸로 기억하는데 왜 그런지 궁금합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
페치 조인과 프록시 질문입니다.
페치 조인시 질문사항입니다. 페치 조인 사용시 LAZY 로 지정된 엔티티는 무시되고, 제일 우선적으로 적용 된다고 기본편에서 배웠습니다. 그렇다면 프록시 클래스로 가져오는게 아니라, 지정한 엔티티 클래스로 가져온다고 생각을 했는데 실제 디버그 모드에서 확인을 해보면 프록시 클래스와 엔티티 클래스가 섞여서 들어오네요.. 제가 잘못 이해한 부분이 있을까요?