묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 중급 1편
예외처리
1 번 코드 질문: 1 번 코드에서 빨간색과 같이 terminal 에서 돌리면 test.txt 라는 파일은 있지만 txxxxt.txt 라는 파일이 없으므로 throws 를 해서 프로그램을 종료 시키는 건가요???그런데 왜 다시 이 아래에 올바른 파일 이름 test.txt new.txt 를 하면 새로운 파일 new.txt 가 만들어지나요? 만약 예외 처리를 throws 하면 프로그램이 종료되므로 처음부터 다시 javac ExampleA.java 를 해주고 나야만 다시 java ExampleA test.txt new.txt 를 할 수 있는거 아닌가요?
-
미해결김영한의 실전 자바 - 중급 1편
예외처리
만약 제가 이 코드를 만들었다고 가정해보겠습니다. 그러면 제가 어떤 근거로 이게 chekcedException 이므로 try-catch 를 이용하거나 throws 를 해야한다는 것을 알 수 있죠?
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
authentication관련 질문...
public void login(Account account) { System.out.println(account); UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(account.getNickname(), account.getPassword(), Collections.singleton(new SimpleGrantedAuthority("ROLE_USER"))); SecurityContextHolder.getContext().setAuthentication(token); }우선 AccountService에 있는 login입니다.제가 테스트를 하던 도중 나머지는 다 되는데 authetication부분에서 문제가 있는것을 발견했습니다. 단위테스트로 하다보니 권한이 부여가 되지 않아서 회원가입을 해도 다시 원상태로 복구되더군요 springsecurity6로 바뀌면서 새로 바뀐부분이 있길래 구글링해서 바꿀만큼 바꿔보고 찾을만큼 찾아봤다 생각했는데도자꾸 권한부여 부분에서 문제가 생깁니다(위의 login함수)이럴경우 어떻게 바꾸어야 할까요...? 저 위에 SecurityContextHolder.getContext().setAuthentication(token); 라는 코드전에 토큰을 출력해 보니UsernamePasswordAuthenticationToken [Principal=jungsik, Credentials=[PROTECTED], Authenticated=true, Details=null, Granted Authorities=[ROLE_USER]]이렇듯 AUtheticated는 true로 반환되는데 redirect될때는 권한이 사라지는것 같습니다
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
cascade와 orphan removal이 헷갈려요 ㅜㅜ
Child child1 = new Child(); Child child2 = new Child(); Parent parent = new Parent(); parent.addChild(child1); parent.addChild(child2); em.persist(parent); em.flush(); em.clear(); Parent findParent = em.find(Parent.class, parent.getId()); // em.remove(findParent); findParent.getChildList().remove(0); tx.commit(); @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, orphanRemoval = true) private List<Child> childList = new ArrayList<>();cascade 옵션과 orphanRemoval옵션을 각각 켜보기도 하고 둘다 켜보기도 하면서,주석 표시해 둔 em.remove와 그 아랫줄에 해당하는 코드를 번갈아 주석처리해보며 cascade와 orphan removal의 차이에 대해 알아보려고 하는데 할 수록 헷갈리네요 ㅜ다시 한 번 정리해주실 수 있을까요? 강의를 다시 봐도 헷갈리는 지점이 있어서 질문드립니다.
-
미해결김영한의 실전 자바 - 중급 1편
[3.StringClass][str.concat] concat질문 (p.8, p.15)
[p.8 / str.concat 오류 이유 -> 불변]하기 코드의 오류가 발생한 이유는 str.concat(" java")를 한 내용을 String타입의 변수로 담아주지 않았기 때문입니다. package lang.string.immutable; public class StringImmutable1 { public static void main(String[] args) { String str = "hello"; str.concat(" java"); System.out.println("str = " + str); } } 그에 비해 반면, p.15의 concat부분이 이해가 되지 않습니다.package lang.string.method; public class StringChangeMain1 { public static void main(String[] args) { String str = "Hello, Java! Welcome to Java"; System.out.println("인덱스 7부터의 부분 문자열: " + str.substring(7)); System.out.println("인덱스 7부터 12까지의 부분 문자열: " + str.substring(7, 12)); System.out.println("문자열 결합: " + str.concat("!!!")); System.out.println("'Java'를 'World'로 대체: " + str.replace("Java", "World")); System.out.println("첫 번째 'Java'를 'World'으로 대체: " + str.replaceFirst("Java", "World")); } }상기에서 str.concat을 한것은 어떠한 String변수에도 담기지 않았습니다.그럼에도 불구하고, str과 !!!가 합쳐져서 나온것을 볼 수 있습니다. 불변의 String 객체의 내용이 변수에 담지 않았음에도 불구하고 합쳐져서 나오는 이유는 무엇인가요? 궁금합니다!!
-
미해결김영한의 실전 자바 - 중급 1편
equals()
String str1 = "Hello" ;String str2 = "Hello" ; 이때에는 boolean result = str1.equals(str2) ; 를 하면 result = true; 인 이유가 무엇이고,Dog dog = new Dog("HI") ; Car car = new Car("HI") ; 이떄에는 boolean result = dog.equals(car) ; 이건 result 가 false 인 이유가 무엇인가요 ?저 위의 String 예시에서는 object classs 의 equals 메서드를 사용하는게 아닌건가요 ? 그리고 만약 Object class 의 equals 메서드를 애초에 equals() 수업에서 오버라이딩 한것처럼 만들면 되는거 아닌가요 ? ( 오버라이딩의 수고스러움을 덜기 위해)
-
미해결김영한의 실전 자바 - 중급 1편
object class
만약 object class 가 제공하는 equals() 에 대해서 어느 한 A라는 클래스가 다른 특정한 B 클래스를 extends 하면 A 클래스 내에서는 equals() 를 사용하지 못하는건가요 ?
-
해결됨김영한의 실전 자바 - 중급 1편
열거형 Grade 질문
안녕하세요 영한님 enum Grade 안에 discount 메서드를 추가하는 부분을 보면서 궁금한 부분이 생겼는데, 실제로도 이러한 등급 enum이 있을 때, 등급에 따른 배송비 무료나 사은품 증정 같은 혜택의 로직들을 enum의 내부에서 다루는 걸까요?
-
미해결김영한의 실전 자바 - 기본편
다형성 참조에 관하여 질문 있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.Parent poly = new Child();이코드가 부모에 자식을 참조 할 수 있다는건 알겠습니다. 그런데 근본적으로 코드가 해석이 명확히 안됩니다.Parent타입의 변수 poly를 선언하고 poly에 Child클래스의 객체를 생성후 그 객체의 참조값을 대입을 한건가요? 그럼 이 그림에서 Parent poly = new Child(); 이 코드를 작성시 메모리에 Parent도 생성이 되는걸로 나와있는데 Child객체만 생성된거 아닌가요? Parent도 메모리가 할당되는 이유가 궁금합니다. 그리고 자식의 기능을 호출 할 수 없다고 하셨는데 poly에 결과적으로 Child객체의 참조값이 대입된거 아닌가요? 그러면 참조값을 찾아서 메소드를 호출 할 수 있는거 아닌가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
CRUD 미니플젝을 하는도중에 궁금합니다.
/* 등록 */ public void savePosts(Posts posts) { postsRepository.save(posts);/* 업데이트 */ public void doUpdate(Posts posts) { postsRepository.save(posts);구글링을 해보니 JPA의 save를 사용했을시 기존에 DB에 데이터가있을땐 바뀌는 부분만 업데이트 된다해서 이렇게 코딩을 했습니다. 하지만 수정기능을 동작해보니 기존 데이터가 수정되지 않고 새로운 데이터로 DB에 추가가 되고있습니다. 무언가 다른 방법이 있을까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
병합이랑 변경감지를 왜쓰나요? 그냥 jpa에 있는 sql문 update를 쓰면 되지않나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]예전에 프로젝트를 할때jpa에 있는 sql문을 통해서 update문으로 수정을 했는데병합이랑 변경감지를 구지 쓰는 이유가 있을까요?
-
미해결스프링 시큐리티
파라미터값이 넘어가지 않습니다 ....
여기까진 값이 잘 전달이 되었는데 왜 넘어가지 않을까요 ...이런 에러가 발생하는데 아무리 봐도 리다이렉트는 한번밖에 안한거같지 말입니다 ㅜcustomAuthenticationFailureHandler입니다 실행결과 입니다 url을 직접 입력할 땐 메세지가 잘 나옵니다
-
해결됨스프링 시큐리티 OAuth2
OAuth2AuthorizationServerConfigurer 질문 있습니다.
ProviderSettings를 통해 기존의 토큰 요청 uri을 변경하는 법은 숙지했으나 token endpoint uri를 여러개 설정하는 방법이 있는지 궁금합니다.ex ) /oauth2/token /get-token ....
-
미해결김영한의 실전 자바 - 기본편
다형적참조와 메서드 오버라이딩 관련해서 질문있습니다!!
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요! 강의 너무 잘보고있습니다 ㅎㅅㅎ다형적 참조에서 궁금한 점이 있어 질문 드립니다!사진처럼 Child에서 Parent 메서드를 오버라이딩 했습니다. 인스턴스는 Child로 생성했고,parent 변수에 업캐스팅 해주어 Parent type으로 변경했습니다. 근데 결과가 부모(Parent)의 parentMethod()가 실행될줄 알았는데 오버라이딩 된 자식의 메서드가 실행되었습니다..!저는 위의 그림처럼 될것이라고 생각했습니다.강의에서도 자식방향으로는 내려갈 수 없다고 하셨고,같은type인 Parent 인스턴스 부터 메서드를 찾아서부모의 parentMethod가 실행될줄알았는데어째서 밑으로 내려간 것인지 궁금합니다!! 추가로)instanceof (5:00쯤) 강의에서도자식방향으로 내려갈수 없으니 다시 다운사이징 해줘서child.childMethod()를 호출했다고 이해했습니다. 다른질문글을 찾아보긴했는데 컴파일시, 런타임시에 뭔가 다다고하셨고오버라이딩은 런타임 때에 알수있어서라는 식의 답변을 보았는데 이해가 안돼서 질문드립니다 흑흑.. 설명해주시기 너무길면 어떤 개념을 찾아보아야 하는지 알려주실수있을까요!!
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
섹션7 문제와풀이 상품구매
안녕하세요! 강의를 듣고있는데 상품구매 문제에서 강사님은 if문을 사용하셨는데 저는 switch문을 사용해서용 .. switch문 써도 된다고 하시긴 하셨는데 정확한 답이 없어서 이게 맞는지 잘 몰라서 질문드립니다!그리고 switch문보다 if문을 사용하는게 더 괜찮을까요 .. ?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
HashMap 에러가 발생합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요 테스트 케이스 작성하고 처음으로 실행해볼 때 실행하니까 HashMap에서 에러가 발생하는데 어느 부분이 문제인지 잘 모르겠습니다
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
6강 질문 @RequestParm, @RequestBody
@GetMapping("/add") public int addTwoNumbers(CalculatorAddRequest request) { return request.getNumber1() + request.getNumber2(); } @PostMapping("/multiply") public int multiplyTwoNumbers(@RequestBody CalculatorMultiplyRequest request) { return request.getNumber1() * request.getNumber2(); }GetMapping 메소드에서는 @RequestParm 어노테이션을 사용하지 않아도 자동으로 쿼리 데이터를 DTO로 변환해주고 PostMapping 메소드에서는 @RequestBody 어노테이션을 사용해야만 Body 데이터를 DTO로 변환해주는 것인가요?
-
미해결실습으로 배우는 선착순 이벤트 시스템
데이터베이스에 쿠폰 insert 실패시
안녕하세요. 강의 잘 듣고있습니다 !카프카 컨슈머가 쿠폰레포지토리에 save하는 과정에서 모종의 이유로 실패하여 롤백 되었을 때, 레디스에서는 이미 increment가 되었는데 이걸 하나 빼줘야되는거 아닌가요?이런 처리는 어떻게하는지 궁금합니다 !추가) 뒤에 얘기가 나오는군요 ㅎㅎㅎ.. FailedEvent를 저장하는 것도 실패하였다면, 배치프로그램이 제 역할을 못할 것 같은데요.. ! 그렇다면 로그를 보고 판단해야할 것 같은데 실무에서도 그렇게 진행이 될까요 ? 그리고, FailedEvent를 삽입하는 것에서도 에러가 발생할 수 있기 때문에 또 try catch로 묶어서 이것 마저 실패할 경우에도 로그를 따로 남겨야하는지 궁금합니다 !
-
해결됨실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
그래들 디펜더시 버전 명시
안녕하세요, 궁금한 게 있어 질문드립니다!현재 강의까지 그래들에 3개의 디펜던시를 추가해주었는데요, 기존 자바-스프링부트 환경에서는 디펜던시에 라이브러리 버전을 명시하지 않아도 스프링부트가 내부적으로 호환되는 버전을 찾아 사용하는 것으로 알고 있습니다.반면, 코틀린-스프링부트에서 디펜던시를 사용할 때 세 경우 모두 버전까지 명시해 사용했는데요, 혹시 코틀린을 사용할 땐 매번 이렇게 최신의 안정화된 버전을 찾아 사용해야 하는 것인지 궁금합니다.또한 검색해보니 groovy gradle 대신 사용하는 kotlin-dsl이라는 것도 봤는데요, 혹시 고급편에 이 내용이 포함되어 있을지도 궁금합니다.항상 정성들인 답변 감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
member엔티티와 order 엔티티의 조회 시 관계
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]json으로 return 할 때 궁금한 점이 있어서 질문드립니다.이전 강의에서 member 엔티티 자체를 json 타입으로 return 할 때는 orders(컬렉션)에 대해 무한루프가 걸리지 않았지만 order를 json 타입으로 return하게 되면 강의에서 처럼 여러 엔티티들에 의해 무한루프가 걸리게 됩니다.컬렉션인 데이터의 경우 무한루프에 걸리지 않는 이유가 무엇인가요??