반응형 분류 전체보기338 [Spring] 생성자 주입 vs 필드 주입 vs 수정자 주입 의존성 주입; Dependency Injection Spring에서 의존성을 주입하는 방법은 3가지가 있다. 생성자 주입; Constructor Injection 필드 주입; Field Injection 수정자 주입; Setter Injection 결론부터 말하자면 '생성자 주입'이 가장 좋다. 각 주입이 어느 차이점이 있는지 살펴보자. 생성자 주입; Constructor Injection final 키워드 선언 가능 테스트 코드 작성 용이 @Controller public class HomeController { private final GameService gameService; // Spring 4.3 이전 버전이라면 @Autowired 필요 public HomeController(GameServi.. 2022. 4. 28. [우테코] 레벨1 인터뷰 목차 1. 서론 2. 레벨 로그 3. 질문 준비하기 4. 피드백 🙂 서론 레벨 로그에 대한 후기를 작성할까 말까 하다가... 피드백 받았던걸 기록해두면 좋을 것 같아서 뒷북으로 작성해본다. 우아한테크코스에서는 새로운 레벨이 시작할 때마다 레벨 인터뷰를 진행한다. 이전 레벨에서 자신이 학습한 내용들에 대해 리마인드도 하고 현재 학습 상태에 대한 인지가 된다. 간만에 면접 준비(?)를 하려니까 덜덜 떨렸다. 긴장 MAX😖... 진행 과정은 아래와 같다. 방학 기간에 각자 레벨 로그를 준비한다. 다른 사람의 레벨 로그를 읽고 이를 바탕으로 질문을 미리 준비해둔다. 인터뷰 당일에 질문하는 사람 / 답변하는 사람 / 관찰자 역할을 번갈아가며 진행한다. (관찰자: 말하기 역량에 대해 피드백 함) 인터뷰를 진행한다... 2022. 4. 24. [Spring] @ExceptionHandler로 API 예외 한번에 처리하기 목차 1. 서론 2. @ExceptionHandler 3. 상태 코드 바꾸기 4. Exception 한꺼번에 처리하기 5. 모든 Controller에 적용시키기 🙋♀️ 서론 API를 호출하다 보면 예외가 많이 발생된다. controller에서 처리하려고 로직을 짜다보면 수많은 중복 코드가 발생한다. Spring에서는 이를 편리하게 처리하기 위해 @ExceptionHandler라는 어노테이션을 지원해준다. 이번 글에서는 에러 처리 방법에 대해 공부해보겠다. 🚀 @ExceptionHandler Controller에서 @ExceptionHandler가 붙은 메서드를 이용하면 특정 예외를 처리할 수 있다. Controller 내부에서 어떠한 API가 호출되다가 IllegalArgumentException이 발.. 2022. 4. 21. [JDBC] JDBC가 등장한 이유 목차 1. JDBC 등장 배경 2. JDBC란 3. 표준화의 한계 4. JDBC와 최신 기술 👨💻 JDBC 등장 배경 애플리케이션을 개발할 때 중요한 데이터는 대부분 DB에 저장된다. 클라이언트가 DB를 호출하려면 아래와 같은 과정을 거친다. 여기서 Application Server에서 DB까지의 과정을 좀 더 살펴보자. 커넥션 연결: 주로 TCP/IP 사용 SQL 전달: 커넥션을 통해 DB에 SQL 전달 결과 응답: DB가 SQL 수행 후 결과 응답. application server는 응답 결과 활용 과거에는 DB마다 커넥션을 연결하는 방법, SQL 전달하는 방법, 결과를 응답 받는 방법이 모두 달랐다. 게다가 MySQL, Oracle DB, h2 등등등 DB의 종류는 정말 정말 많다. DB 종류에.. 2022. 4. 15. [우테코] 체스 미션 4~5 단계 학습 로그 목차 1. GitHub 저장소 2. 새로운 요구사항 3. 리팩터링 4. 생각하기 5. 셀프 회고 1. GitHub 저장소 GitHub: https://github.com/yeon-06/java-chess/tree/step2 Pull Request: https://github.com/woowacourse/java-chess/pull/366 1~3단계 학습로그: https://yeonyeon.tistory.com/212 2. 새로운 요구사항 웹 UI 및 DB 연동 UI: Spark DB: MySQL 콘솔과 웹 진행 둘 다 가능 방 번호를 통해 게임방에 입장 가능 3. 리팩터링 3-1. 상태 패턴 제거 뷰를 완전 분리하기 위해서 불필요한 메서드 계속 늘어남 BiConsumer 등을 이용해 View 메서드를 호.. 2022. 4. 12. [Java] 사라진 SQLException 😏 서론 이번에 과제를 진행하면서 PreparedStatement를 이용해 DB 데이터를 가져왔다. 코드를 작성하다보니 자연스럽게 try - catch를 통해 SQLException를 처리하는 코드가 필수적으로 추가되었다. 여기서 한가지 의문점이 들었던 건, 예전에 만들었던 프로젝트들에서도 DB와 연동하는 프로젝트들은 정말 많았으나, SQLException을 따로 처리한 기억이 없었다. 어떤 차이가 있는가... SQLException은 어디서 처리됐는지, 왜 사라졌는지에 대한 이야기를 다뤄보려고 한다. 🤩 SQLException이란? 데이터베이스 접근 또는 다른 에러에 대한 정보를 제공하는 예외 Checked Exception 🔻 Checked Exception vs Unchecked Exception .. 2022. 4. 7. [Java] java.sql.SQLException: Parameter index out of range ❗ java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0). 오류 💥 문제 상황 PreparedStatement를 이용해 쿼리문을 실행시키려고 함 // 파라미터에는 ?가 들어가야 한다. String sql1 = "update board set turn = {1} where id = {2}"; // 문자열이어도 '를 쓸 필요가 없다. - setString을 해주니까 String sql2 = "update board set turn = '?' where id = ?"; try (PreparedStatement preparedStatement = connection.prepareStatement(sql1.. 2022. 4. 4. [Java] 반환 타입은 스트림보다 컬렉션을 사용하자. 일련의 원소를 반환하는 메서드 반환 타입으로 Collection, Set, List, Iterable, Array 등 다양하게 사용 가능하다. Java8에서 Stream 등장으로 복잡한 일이 발생하기 시작했다. 반복(iteration)을 지원하지 않는 Stream ❗ stream만 반환하는 API 여기서 의미하는 for-each는 stream().forEach()가 아니다. for(String l : list) { ... } 를 의미합니다. ❓ Stream과 Iterable Stream 인터페이스는 Iterable 인터페이스가 정의한 추상 메서드를 전부 포함한다. 이들은 Iterable 인터페이스가 정의한 방식대로 동작한다. 그럼에도 for-each가 불가능한건 Stream이 Iterable을 확장(ex.. 2022. 4. 3. [우테코] 체스 미션 1~3 단계 학습 로그 목차 1. GitHub 저장소 2. 구현 기능 목록 3. 새로운 도전 4. 생각하기 5. 회고 1. GitHub 저장소 GitHub: https://github.com/yeon-06/java-chess/tree/step1 Pull Request: https://github.com/woowacourse/java-chess/pull/297 2. 구현 기능 목록 입력 명령어에 따른 여러 동작 (start, move, status, end) 체스판 초기화 (입력: start) 체스 말 이동 (입력: move) 체스 규칙에 따라 각 기물들 이동 가능 pawn의 대각선 이동은 다른 팀의 말을 잡을 때만 가능 pawn의 첫수(첫 시작)는 1칸 또는 2칸 이동 가능 pawn은 팀의 색깔에 따라 이동 가능 방향이 다름 .. 2022. 4. 1. 이전 1 ··· 12 13 14 15 16 17 18 ··· 38 다음 반응형