묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
memberRepository가 다른 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]memberRepository가 다르게 나와서 다른 분들의 질문 답변을 보고 해결했습니다.Appconfig의 memberRepository가 static으로 선언되어 있기 때문이더라구요. 그래서 궁금한점이, 왜 static으로 선언되면 singleton이 되지 않나요?항상 친절한 답변 감사드립니다^^!ㅎㅎ
-
미해결스프링 핵심 원리 - 기본편
순수한 자바 테스트 코드
필드 주입을 사용하면 생기는 문제점에 관한 내용을 보다가 궁금한 것이 생겨서 질문드립니다.스프링의 @Autowired 가 동작하지 않는 순수한 자바 테스트 코드에서, @Autowired가 붙은 필드, setter함수, 생성자는 @Autowired가 없는 순수 자바 코드로 동작한다고 생각하면 되나요? 예를 들어,OrderServiceImpl 클래스에는 필드 or setter 함수 or 생성자에 @Autowired 가 붙어있는데,OrderServiceTest 클래스에서는 순수한 자바 코드만으로 테스트를 수행하려고 할 때, OrderServiceImpl 클래스의 필드 or setter or 생성자를 @Autowired가 없다고 생각하고 갖고와서 쓸 수 있는지 궁금합니다. 또, 이 상황에서 테스트코드에서 따로 @Autowired에 의해서 발생하는 오류는 없는지 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
static SingletonService getInstance() 질문입니다.
다른 사람분 질문 답변중에public class SingletonService { //1. static 영역에 객체를 딱 1개만 생성해둔다. private static final SingletonService instance = new SingletonService(); //2. public으로 열어서 객체 인스터스가 필요하면 이 static 메서드를 통해서만 조회하도록 허용한다. public static SingletonService getInstance() { return instance; } //3. 생성자를 private으로 선언해서 외부에서 new 키워드를 사용한 객체 생성을 못하게 막는다. private SingletonService() { } public void logic() { System.out.println("싱글톤 객체 로직 호출"); } }이 코드의 static SingletonService getInstance()에 대한 글을 읽고 궁금한점이 생겨 질문드립니다.안녕하세요, lsj59285 님! 공식 서포터즈 codesweaver 입니다. 우선 멤버변수 instance 가 private 접근 제어자 이기에 외부에서 이 멤버변수에 직접 접근할 수 없습니다. 게다가 생성자도 private 이기에 객체를 생성하여 사용할 수도 없지요. instance에 접근할 수 있는 방법이 필요한데 그게 getInstance() 메서드 입니다. 인스턴스를 생성하지 않고 접근해야 하니 static 이어야 하고요. 그리고 getInstance() 에서 멤버변수 instance 에 접근하는데요 이 때, static 영역에서 instance (힙 영역)을 참조할 수 없습니다. static 은 프로그램에서 유일한 영역이고, 인스턴스는 N개로 늘어날 수 있습니다. 즉 1:N 관계를 갖습니다. 그래서 인스턴스가 static 영역을 참조할 순 있으나, static이 인스턴스를 참조할 순 없습니다. (어떤 인스턴스를 지칭하는지 알 수 없기 때문에) 그래서 instance 도 static 영역에 두어 getInstance() 메서드가 접근할 수 있도록 한 것입니다. 감사합니다. getInstance()가 static 메서드라서 instance 도 static 영역에 두었다고 하셨는데 instance는 공유할 수 있도록 static 영역으로 먼저 보냈 게 아닌가요??...getInstance()를 static영역으로 보낸건 생성자가 private니까 객체생성이 안되서 인스턴스 메서드를 사용을 못하니까 그런거 아닌가요??...답변주시면 정말 감사하겠습니다.
-
해결됨스프링 핵심 원리 - 기본편
OrderService와 MemberService는 왜 서로 다른MemoryMemberRepository를 사용하는 건지 궁금합니다!
AppConfig에서 다음과 같이 각각 MemberService와 OrderService를 생성자에서 각각 따로MemoryMemberRepository를 새로 생성하는데 이렇게 하면 클라이언트는 같은 리포지토리를 공유를 안하지 않나요?? 서로다른 서비스가 같은 리포지토리를 공유하여 사용하는게 아니고 각각의 리포지토리를 사용한다고 생각하니 의문이 들어서 질문드립니다!!아니면 우선 DIP를 지키기 위한 코드를 보여주려고 이렇게 짜신건 지 궁금합니다!
-
미해결스프링 핵심 원리 - 기본편
스프링부트 빈 이름 조회
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]스프링부트에선 강의에서처럼 ac를 통한 조회를 못하는데 빈 이름을 어떻게 조회할 수 있을까요?
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
기본생성자 질문드리겠습니다.
BlackBox(){}BlackBox(String modelName, String resolution, int price, String color){}위와같이 매개변수가 없는 기본생성자매개변수가 있는 생성자가 있는 경우에 해당 클래스를 참조하는 객체를 생성하는 경우BlackBox b2 = new BlackBox("하양이", "UHD", 300000, "화이트");이와같이 매개변수가 있는 생성자를 참조하는 객체를 만든다면 메소드가 오버로딩이 되어 기본생성자를 호출하지 않는건가요? 매개변수가 있는 생성자와 없는 기본생성자 둘다 없는 경우에는 에러가 나지 않는데. 매개변수가 있는 생성자만 생성을 한뒤해당 메소드를 참조하는 객체를 생성하는 경우 BlackBox b2 = new BlackBox("하양이", "UHD", 300000, "화이트");와같이 형식을 맞춰 해당 객체를 생성하는 오류가 나는 이유를 알고싶습니다.
-
해결됨스프링 핵심 원리 - 기본편
스코프와 프록시 scope request 관련 질문입니다.
안녕하세요.MyLogger와 같은 기능을 현업에 적용 해보려고 합니다.각 서비스는 물론 클라이언트의 요청을 구분하기 위해 MyLogger가 필요하지만, 모든 서비스에서 MyLogger 라는 서비스를 선언을 해주는게 맞을까? 의문이 들었습니다.혹시 다른분들의 질문이 있나 찾아보던 중 https://www.inflearn.com/questions/288770/%EC%8B%A4%EB%AC%B4%EC%97%90%EC%84%9C-scope-request-%EB%A5%BC-%EB%A7%8E%EC%9D%B4-%EC%82%AC%EC%9A%A9%ED%95%98%EB%82%98%EC%9A%94더 나은 방법이 있다는걸 알게 되었습니다.해당 방법이 AOP 와 프록시를 이용한 기술인지 궁금하여, 질문드립니다.
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
질문 드리겠습니다.
강의를 듣는 중 갑자기 의문이 들어서 질문드립니다.main메소드는 해당 클래스파일을 실행하는경우 가장 먼저 실행되는 메소드로 알고있습니다.근데 blackBox.java의 경우에는 main메소드를 생성하지 않고 개별의 메소드만 생성하여 다른 파일에서 객체를 생성하여 해당 메소드를 호출하여 사용하고있습니다.그렇다면 main메소드가 없다면 해당 클래스는 자체적으로 자신의 메소드를 수행시킬 수 없는것일까요?
-
미해결스프링 핵심 원리 - 기본편
NoSuchBeanDefinitionException 오류
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'hello.core.order.OrderServiceImpl' available오류가 나온다면 AutoAppConfig에서 @ComponentScan( basePackages = "hello.core.member", <- 이 부분을 지우면 된다!! // memeber를 포함한 하위 패키지를 기준으로 찾기 때문에 // order에 대한 것 NoSuchDefiniton이 나오게된다. excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class) )
-
해결됨스프링 핵심 원리 - 기본편
localhost:8080 만 쳐도 localhost:8080/hello페이지로 넘어갑니다
다른 강의 듣느라 아무것도 설정안한 화이트 에러페이지가 떠야되는데 옛날에 실습했던 이 부분이자꾸 떠요 크롬에서 캐시삭제해봐도 똑같습니다 이럴땐 아예 그 프로젝트를 삭제하면 해결이 될까요? 아님 어디를 고쳐야할까요..<!DOCTYPE HTML> <html> <head> <title>Hello</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> Hello <a href="/hello">hello</a> </body> </html>
-
해결됨스프링 핵심 원리 - 기본편
3분 경 필드 명을 빈 이름으로 변경하였을 경우에 대한 설명
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]3분 10초 경 강의 중에 생성자의 파라미터를 rateDiscountPolicy로 변경하고 필드 명을 빈 이름으로 변경하는 예시를 설명 중 필드명을 생성자의 파라미터 이름과 다르면 오류가 나온다고 하였는데 실제로 보니 fix로 바꾸어서 확인해보았는데 따로 오류는 나지 않더라구요.그래서 생각해보았는데 일단 순서상 생성자 주입이 먼저 일어나니 이 때 파라미터명을 보고 rateDiscountPolicy가 주입이 일어나고 이후 3번째 필드 주입된 곳은 앞서 주입했던 rateDiscountPolicy가 다시 들어간 것인가요?콘솔을 보니 fixDiscountPolicy는 의존 주입이 일어나지 않아서 이렇게 생각해보았습니다.
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
main 함수 실행과 관련해서 질문드립니다.
안녕하세요. 좋은 강의 잘 듣고 있습니다.현재 인텔리제이에서 src/main/kotlin 폴더를 만들어서 강의를 따라가고 있습니다.2강 강의를 듣던 도중 println(str?.length) 를 실행해보려고 main 함수를 실행시켰더니 빌드가 되면서 에러가 발생합니다.lec12 패키지의 Lec12Main class에서error: package Person does not exist 가 발생합니다.Run Configuration에서 Run이 되기 전에 Build를 안 하게 옵션을 바꿔주면 함수가 실행은 되지만 str에 null을 넣었을 때도 길이가 3이 나오는 기이한 현상이 발생합니다.어떻게 해결하는 것이 좋을까요? (일단은 에러가 나는 부분을 주석처리하고 강의를 진행하고 있습니다!)
-
해결됨스프링 핵심 원리 - 기본편
선생님의 Build.gradle 소스코드를 받을 수 있을까요
분명 예제 강의에서 알려준대로 spring 홈페이지에서 받은 파일인데 저는 assertj 나 springframework 가 Build.gradle에 안들어가 있더라고요 그래서 Build.gradle 코드를 받고싶습니다.
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
질문이요
arrayList.add(new Student("유재석","파이썬"));여기서 (new Student("유재석","파이썬")); 는 생성자에 값을 넣는게 맞는걸까요?
-
해결됨스프링 핵심 원리 - 기본편
스프링빈을 만드는 방법
수업중에 스프링 빈을 만드는방법에 대하여 설명해 주셨는데 스프링빈을 만드는 방법직접 등록하는 방법 (Xml) factoryBean을 통해서 등록하는 방법 (일반적으로 자바 config를 사용하는 것)이렇게 이해하면 될까요??
-
해결됨스프링 핵심 원리 - 기본편
부모 - 자식 관계에서의 빈 조회
자바와 관련된 질문인데, 강의 내용과 연관성이 있어서 질문 드립니다.강의에서 스프링 빈을 조회할 때, 부모 타입으로 조회하게 되면, 자식 타입도 함께 조회된다고 하셨었는데요.인터페이스 - 구현클래스 의 관계도 부모 - 자식의 관계로 취급할 수 있는 것인가요?예를 들어, 아래의 두 경우를 보면,Map<String, DiscountPolicy> beansOfType = ac.getBeansOfType(DiscountPolicy.class); Map<String, Object> beansOfType = ac.getBeansOfType(Object.class);object는 모든 클래스의 부모 클래스이기 때문에, 모든 클래스가 상속받으므로, 부모 - 자식의 관계에 의해, 하위의 모든 자식 클래스까지 전부 조회가 되는 것은 이해가 되는데,discountpolicy의 경우, 부모 클래스의 상속을 받은 것이 아닌, 인터페이스를 실제로 구현한 것인데, 이를 부모 - 자식의 관계라고 볼 수 있는지 궁금합니다.
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
chap_05 아스키코드 질문
영화관 좌석 번호에서 ch를 문자열로 바꾸는 부분에서 실행하면 A1~A15 까지는 정상 표시되지만 그밑에는null 로 표시가 되는데 원인이 무엇인가요? // 세로 크기 10 x 가로크기 15 에 해당하는 영화관 좌석 String[][] seats3 = new String[10][15]; char ch = 'A'; for (int i = 0; i < seats3.length ; i++) { for (int j = 0; j < seats3[i].length ; j++) { seats3[i][j] = String.valueOf(ch) + (j + 1); } ch++; // 영화관 좌석 확인 for (i = 0; i < seats3.length; i++) { // 세로 for (int j = 0; j < seats3[i].length; j++) { // 가로 System.out.print(seats3[i][j] + " "); // A1 A2 A3... } System.out.println(); }
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
다차원 배열순회 궁금점
// 다차원 배열 순회 String[][] seats = new String[][]{ {"A1", "A2", "A3", "A4", "A5"}, {"B1", "B2", "B3", "B4", "B5"}, {"C1", "C2", "C3", "C4", "C5"} }; for (int i = 0; i < 3; i++) { // 세로 for (int j = 0; j < 5; j++) { // 가로 System.out.print(seats[i][j] + " "); //A1 A2 A3... } System.out.println();이 부분에서 세로랑 가로의 순서를 바꾸는방법은 없는건가요?컴퓨터가 세로먼저 계산을 하게 되는건가요?
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
Switch Case 질문 드립니다
안녕하세요.Switch Case 강의 듣고 궁금한 점이 있어서 질문 드립니다.강의 설명 장학금 예시에서 여러 개의 case에 대해 동일한 동작을 수행할 때는 아래와 같이 case 내 statement를 안적어도 된다고 설명해주셔서 중고 상품 등급에 따른 가격 책정 예시 부분에도 case 내 동일한 동작(price+=1000)을 삭제해봤는데 출력값이 안 맞게 나오네요~ 연산 동작을 수행할 때는 적용이 안되는 건가요? 아니면 제가 뭔가를 잘못 적은걸까요?ㅎㅎgrade = 1; // 등급 price = 7000; // 기본 가격 switch (grade) { case 1: case 2: case 3: price += 1000; break; } System.out.println("2." + grade + "등급 제품의 가격: " + price + "원");
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
클래스에 생성자를 만든 후 _08_Constructor를 실행하면 에러가 납니다.
클래스 파일에 생성자를 추가 한 다음에는앞에서 했던 클래스 파일에서 오류가 나서 실행이 안되는데 단일 클래스만 실행하는 방법이 있을까요?