묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
빈 생명주기 콜백 강의 관련 질문!!!!
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]빈 생명주기 콜백 강의를 듣고 있는데요 정확히 초기화 콜백이 뭔지 잘 이해가 되지 않아서요ㅠㅠ@Bean(initMethod = ~) 이렇게 초기화, 소멸 메서드를 지정할 경우 강의에서 보여주신 예시처럼 LifeCycleConfig 클래스를 보면NetworkClient networkClient = new NetworkClient();networkClient.setUrl(~);return networkClient;인데 왜 setUrl 메서드가 수행되고나서 초기화 메서드인 init() 메서드가 수행되는 건가요??초기화 메서드는 객체가 생성되고 의존관계가 주입된 후 수행된다고 했는데 NetworkClient 클래스 코드를 보면 객체를 생성하기위해 생성자를 실행시키는건 알겠는데 그 다음에 이 클래스에서 의존관계를 어디에 주입한다는 건가요?? @Autowired 를 안썼는데 의존관계 주입이 그냥 되는건가요??객체를 생성하고 의존관계를 주입했다면 setUrl 메서드보다 초기화 메서드인 init 메서드가 먼저 실행되어야 하는거 아닌가요??
-
미해결스프링 핵심 원리 - 기본편
의존관계 자동 주입 관련
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]의존관계 자동 주입 부분 강의듣고 있는데요 생성자 주입이랑 수정자 주입부분 설명하실때 코드에this.memberRepository = memberRepository;이런 코드가 존재하는데 이는 필드값을 변경하는거 아닌가요?? 싱클톤 컨테이너 강의에서 싱글톤 방식의 주의점에서 특정 클라이언트가 값을 변경할수 있는 필드가 있으면 안된다고 하셨는데 그러면 위의 코드처럼 쓰면 안되는거 아닌가요??
-
해결됨스프링 핵심 원리 - 기본편
프로젝트 생성 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]springio에서 첫번째 사진처럼 설정한 후 인텔리제이로 실행하니 두번째 사진과 같은 오류가 뜹니다. 자바도 11버전으로 다운받았고 환경 변수까지 설정했습니다. 뭐가 문제일까요??
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
equals() 와 getter의 차이
public class _Quiz_09 { public static void main(String[] args) { List<Student> list = new ArrayList<>(); list.add(new Student("유재석","파이썬")); list.add(new Student("박명수","자바")); list.add(new Student("김종국","자바")); list.add(new Student("조세호","C")); list.add(new Student("서장훈","파이썬")); System.out.println("자바 자격증을 보유한 학생"); System.out.println("========================"); for (Student student : list) { if (student.getCertification() == "자바"){ System.out.println(student.getName()); } } } } class Student{ private String name; private String certification; public Student(String name, String certification) { this.name = name; this.certification = certification; } public String getName() { return name; } public String getCertification() { return certification; } }저는 Student 클래스를 생성할 때 getter를 만들어서 getter로 자바 자격증을 찾는 로직을 짯는데equals()와 getter를 비교했을때 어느 방법이 성능면이나 이점이 있는지 알 수 있을까요 ?
-
미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 1(기초편)
강의노트는 어디서 확인할 수 있을까요
첫번째 강의라고 하셨는데 안보이네요...
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
창 띄우기
이 폴더 창을 모르고 없앴는데 다시 어떻게 띄우나요?
-
미해결스프링 핵심 원리 - 기본편
ComponentFilterAppConfigTest 실행 오류가 발생합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강사님을 따라서 코드를 작성했는데 위와 같은 오류가 발생하는데 원인이 무엇인지 알 수 있을까요?
-
미해결스프링 핵심 원리 - 기본편
AutoAppConfig 클래스의 역할은 무엇인가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강의에서 @Component 에노테이션이 붙은 클래스들을 찾아 빈(bean)으로 등록을 한다고 말씀하셨습니다.이때, 각각의 클래스들이 빈(bean, 자바 개념으로는 객체)로 등록이 되어 관리가 된다는 것까지는 이해가 됐습니다.근데 AutoAppConfig 클래스는 무엇인가요?? 이 클래스는 다른 클래스들을 관리하는 빈으로 생각하면 되는건가요?? 설명 부탁드립니다.더위 조심하세요
-
해결됨자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
수업 중간에 메소드 정의 보시는거 어떻게 하는지 알 수 있을까요?
안녕하세요수업 중간에 선생님께서 헬프를 연다?라고 하시면서메소드에 대고 단축키를 눌렀더니자바 사이트로 이동해서 관련 메소드에 대한 정보를 보시던데 어떤 키를 눌렀는지 궁금합니다.참고로 인텔리제이 쓰고 있습니다.구글에 검색해서 알고 싶은데 뭐라고 검색해야 나오는지 몰라서 그냥 여기다가 질문올려봅니다.
-
해결됨PHP 7+ 프로그래밍: 객체지향
나만의 프레임워크 작성 후, 운영환경 배포에 관한 문의 드려요
안녕하세요. 강의를 듣고 공부해보고 있는 개발자입니다.일단 너무 감사하게 잘 듣고 있습니다. 이런 강의는 잘 없어서 나쁜 구조(클래스 중복, 날로 해버리는 코드)로만 유지보수를 해오고 있었었고 개선하고 싶은 생각이 많이 들었거든요. PHP에 숨겨진(잘모르는) 기능도 알아가게 되서 무한 감사합니다.다름이 아니라 nginx 를 사용해서 쓰고 싶은데 잘 작동하지 않는 것 같아 질문드립니다. php -S localhost:8080 -t public 커맨드를 이용했을 땐, 크게 문제가 없는 상태입니다. 한 가지 예로 nginx에 연동하면 라우팅 쪽이 원하는대로 작동되지 않습니다.get '/call' 에서 resource/call.php 를 호출해서 echo 'call' 을 실행시키게 해두었는데get '/call' 시, /의 resource/index.php 내의 echo 'hello World' 가 출력이 되고 있어서 어떤 것을 확인하면 좋을지 몰라 질문드립니다. nginx에 설정에 문제로 생각이 들긴하는데, 잘 모르겠습니다.PHP는 8.1을 사용하고 nginx설정은 다음과 같습니다.server { listen 80; listen [::]:80; root /var/www/html/app/public; index index.php; server_name localhost; error_log /var/www/html/log/nginx/error.log; access_log /var/www/html/log/nginx/access.log; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass unix:/run/php/php8.1-fpm.sock; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } }
-
미해결Java/Spring 주니어 개발자를 위한 오답노트
fake Repository로 테스트를 진행하려고 합니다,
실제 유저 엔티티 가지고 userRepository를 해야하나요? 이것을 가지고 테스트를 해봤는데 id를 자동 매핑으로 해놔서 실제 fake로 테스트할때 id 값을 넣어줄 수가 없어서 구현에 어려움을 겪고 있습니다. 새로 Fake에 적용될 유저 도메인을 작성해야하나요?
-
미해결스프링 핵심 원리 - 기본편
의존관계 자동 주입 강의 관련 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]의존관계 자동 주입 강의에서 수정자 주입 부분 설명하실때 setMemberRepository 와 setDiscountPolicy 메서드에 print문 작성하고 테스트 돌리면 set메서드를 호출하지 않았는데 어떻게 print문도 출력이 되는건가요??OrderServiceImpl 을 빈으로 등록할때 거깄는 메서드까지 다 호출하는건가요??
-
미해결스프링 핵심 원리 - 기본편
@Qualifier 코드 에러
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]fixDiscountPolicy에 @MainDiscountPolicy를 붙이고 OrderServiceImpl 생성자에서 동일하게public OrderServiceImpl(MemberRepository memberRepository, @MainDiscountPolicy DiscountPolicy discountPolicy)라고 주입을 했습니다.하지만 에러가 나는데 아래와 같이 납니다.No qualifying bean of type 'hello.core.discount.DiscountPolicy' available: expected single matching bean but found 2: mainDiscountPolicy,rateDiscountPolicy보면 fix가 아닌 mainDiscountPolicy와 rateDiscountPolicy를 찾았는데요.어디에 코드를 놓쳤을까요? 영상 두번 돌려봐도 도저히 다른점을 모르겠어요.
-
미해결스프링 핵심 원리 - 기본편
JVM에 대한 질문
제가 JVM이 어떠한 구조인지 잘 모르겠는데JVM에 새로운 객체들을 계속 생성하는 메모리 문제는 Java(JVM) 만의 문제인가요? 아니면다른 언어들도 예를 들면 자바스크립트의 prototype, 파이썬에서도 Class로 객체를 만들 수 있고go언어는 struct 로 객체를 만들 수 있는데 이러한 것들도 스프링처럼 싱글톤으로 관리해주는 프레임워크가 없으면 메모리가 가득 차게 되나요?그러면 웹 어플을 만든다고 할 때 가능하면 객체들은 싱글톤 패턴으로 개발해야 좋은 건가요?
-
미해결스프링 핵심 원리 - 기본편
중복 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요MemberServiceImpl.javaMemoryMemberRepository.javaAppConfig.javaParameter 0 of constructor in hello.core.member.MemberServiceImpl required a single bean, but 2 were found:- memoryMemberRepository: defined in file [C:\Users\cksgu\Spring\스프링 핵심 원리 - 기본편\core\core\out\production\classes\hello\core\member\MemoryMemberRepository.class]- MemberRepository: defined by method 'MemberRepository' in class path resource [hello/core/AppConfig.class]. CoreApplicationTests를 실행하면 위와 같은 오류가 나는데뭐가 문제일까요? 제가 생각하기에는 스프링 컨테이너 내에 있는 MemberRepository 타입의 빈이 여러 개가 있어서 그런 것 같은데 맞나요? 제가 생각하는 스프링 빈이 등록하는 과정과 충돌 되는 이유는 다음과 같습니다. @Bean으로 인해이름이 MemberRepository인 MemoryMemberRepository를 빈으로 등록(처음에는 앞 글자가 소문자인 memberRepository 이름으로 등록 되는 줄 알았는데 출력을 해보니 MemberRepository 이름 그대로 저장되는 것 같아요.) @Component으로 인해이름이 memoryMemberRepository인 MemoryMemberRepository를 빈으로 등록 3. MemberServiceImpl에서 @Autowired으로생성자 주입을 하기 시작함.생성자 매개변수가 MemberRepository 타입이므로 MemberRepository 타입과 일치하는 빈을 스프링 컨테이너에서 찾아서 주입한다. 그러나 일치하는 빈이 여러 개 있으므로 충돌이 남... 혹시나 해서AppConfig.java 내에 있는 MemberRepository() 함수를앞 글자가 소문자인 memberRepository() 함수로 바꿔서 실행하면 잘 동작하는데 왜 그런지 알 수 있을까요?MemberRepository() 함수 이름이 MemberRepository 타입의 이름과 일치하면 안되나요? 빈 이름만 바꿨을 뿐 타입이 일치하는 빈이 스프링 컨테이너에서 여전히 여러 개일 텐데 왜 오류가 날지 않는지 궁금합니다. ============== 자답 =============== @Autowired 매칭 정리1. 타입 매칭2. 타입 매칭의 결과가 2개 이상일 때 필드 명, 파라미터 명으로 빈 이름 매칭한다고 합니다. @Bean으로 인해이름이 MemberRepository인 MemoryMemberRepository를 빈으로 등록 @Component으로 인해이름이 memoryMemberRepository인 MemoryMemberRepository를 빈으로 등록 MemberRepository 타입과 일치하는 두 개의 타입을 찾았고,그중에서 MemberServiceImpl 생성자 파라미터 명 memberRepository과 일치하는 빈이 없으므로 오류가 나는 것 같습니다.
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
this의 사용에 대해
안녕하세요. 나름대로 혼자 코드를 짜고 문제를 풀어보았습니다. 근데 SpeedCam의 코드에서 저의 코드는 package camera2; import detector.*; import reporter.*; public class SpeedCam extends Camera { private Detectable detect; private Reportable report; public void setDetect(Detectable detect) { this.detect = detect; } public void setReport(Reportable report) { this.report = report; } public void showMainFeature() { System.out.println("속도 측정, 번호 인식"); } public void detect() { detect.detect(); } public void report() { report.report(); } } 이러합니다. 정상적으로 목표 결과도 얻었습니다 근데 강사님의 코드는 public void detect() { this.detect.detect(); } public void report() { this.report.report(); } 이렇게 다른 부분이 존재하는데this는 왜 필요한걸까요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
질문있습니다
아래 코드에서 detect메소드는 public으로 해줘야 에러가 안뜨더라구요. 무조건 정의는 public으로 해줘야 하는 건가요? package detector; public class AcciedntDetector implements Detectable{ public void detect() { System.out.println("교통 사고를 감지합시다."); }; }
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
안녕하세요 인터페이스에서 궁금한게 하나더 생겨서 질문드립니다.
항상 답변해주셔서 감사합니다. 너무 큰 도움이 됩니다.저의 질문은 아래의 코드에서 package camera2; import reporter.*; import detector.*; public class FactoryCam extends Camera implements Detectable, Reportable{ private Detectable detector; private Reportable reporter; public void setDetector(Detectable detector) { this.detector = detector; } public void setReporter(Reportable reporter) { this.reporter = reporter; } public void showMainFeature() { System.out.println("화재 감지"); } // // public void detect() { // System.out.println("화재를 감지합니다."); // // } // // public void report() { // System.out.println("화재 신고를 진행합니다."); // } // @Override public void detect() { detector.detect(); } @Override public void report() { reporter.report(); } } 제가 궁금한 부분은 private Detectable detector; private Reportable reporter; public void setDetector(Detectable detector) { this.detector = detector; } public void setReporter(Reportable reporter) { this.reporter = reporter; }이 부분인데요. 해당 코드는 implements Detectable, Reportable해줌에 대한 여부와 상관없이, import 패키지를 해줌으로 가능한 부분인건가요?
-
해결됨스프링 핵심 원리 - 기본편
소멸 메서드의 호출 시점
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]SingletonBean.init singletonBean1 = hello.core.scope.PrototypeTest$SingletonBean@54504ecd singletonBean2 = hello.core.scope.PrototypeTest$SingletonBean@54504ecd org.springframework.context.annotation.AnnotationConfigApplicationContext - Closing SingletonBean.destroysingletonBeanFind()의 실행 결과입니다.결과를 보면 ac.close() 로 인해 스프링 컨테이너가 종료된 뒤(네 번째 라인), 싱글톤 빈의 종료 메서드가 호출됩니다. 제가 이해한 바로는 싱글톤 빈의 소멸 메서드는 스프링 컨테이너가 종료되기 전에 호출된다고 알고 있습니다. 그런데 출력 순서를 보면 반대로 되어있어서 왜 그런건지 모르겠습니다
-
해결됨스프링 핵심 원리 - 기본편
basicScan() 테스트는 통과되는데 설정된 빈 내역이 로그에 나오지 않습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]AutoAppConfigTest.java의 basicScan() 테스트 메소드는 잘 돌아가는데요.Test Passed라고만 뜨고 설정된 빈 내역들이 로그에 뜨지 않네요...빈들은 제대로 설정 됐는지 모든 테스트들은 패스가 되긴하는데ㅠㅠ...강의를 따라하면서 종종 선생님 로그와 다를때가 있긴 했는데 큰 문제는 되지 않아서 그냥 넘겼거든요.혹시나 따로 뭘 설정해줘야하는지, 아니면 제가 놓친게 있는 걸까요?