[Java] 25. 예외 처리 - 이론
·
Programming Language/Java
예외 처리 1 - 이론#Java정리예외 처리를 왜 해야할까?사용자의 입력을 받고, 입력 받은 문자를 외부 서버에 전송하는 프로그램을 생각해보자.NetworkClient : 외부 서버와 연결하고, 데이터를 전송하고, 연결을 종료하는 기능을 제공한다.NetworkService : NetworkClient를 사용해서 데이터를 전송한다. NetworkClient를 사용하려면 연결, 전송, 연결 종료와 같은 복잡한 흐름을 제어해야 하는데, 이런 부분을 NetworkService가 담당한다.Main을 통해 사용자의 입력을 받으면 사용자의 입력을 NetworkService에 전달한다.NetworkService는 NetworkClient를 사용해서 외부 서버에 연결하고, 데이터를 전송하고, 전송이 완료되면 연결을 종료..
[Java] 24. 중첩 클래스, 내부 클래스(2)
·
Programming Language/Java
중첩 클래스, 내부 클래스(2)#Java정리이전 시간에 배운 내용정적 중첩 클래스: 바깥 클래스와 밀접한 관련이 있지만, 인스턴스 간에 데이터 공유가 필요 없을 때 사용한다.내부 클래스: 바깥 클래스의 인스턴스와 연결되어 있고, 바깥 클래스의 인스턴스 상태에 의존하거나 강하게 연관된 작업을 수행할 때 사용한다.지역 클래스내부 클래스의 특징을 가진다.지역 변수에 접근할 수 있다. 접근하는 지역 변수는 final이거나 사실상 final이어야 한다.주로 특정 메서드 내에서만 간단히 사용할 목적으로 사용한다.지역 변수처럼 접근 제어자를 사용할 수 없다.바깥 클래스의 인스턴스 변수에 접근할 수 있고, 자신의 env에 속한 지역 변수와 매개변수에 접근할 수 있다.내부 클래스를 포함한 중첩 클래스들도 일반 클래스처럼..
[Java] 23. 중첩 클래스, 내부 클래스(1)
·
Programming Language/Java
중첩 클래스, 내부 클래스(1)#Java정리중첩 클래스, 내부 클래스란?클래스 안에 클래스를 중첩해서 정의할 수 있는데, 이것을 중첩 클래스(Nested Class)라 한다.class Outer { ... //중첩 클래스 class Nested { ... }}중첩 클래스의 분류중첩 클래스는 총 4가지가 있고, 크게 2가지로 분류할 수 있다.정적 중첩 클래스정적 변수오 같은 위치내부 클래스 종류내부 클래스인스턴스 변수와 같은 위치바깥 클래스의 인스턴스의 멤버에 접근지역 클래스지역 변수와 같은 위치내부 클래스의 특징 + 지역 변수에 접근익명 클래스지역 클래스의 특징 + 클래스의 이름이 없는 특별한 클래스중첩 클래스를 정의하는 위치는 변수의 선언 위치와 같다.여기서 정적 중첩 클래스와 내부 클래스로 분류하는 ..
[Java] 22. 날짜와 시간
·
Programming Language/Java
보호되어 있는 글입니다.
[Spring/DB] 01. JDBC 이해
·
Spring/DB
1. JDBC 이해#Spring/DB/Jdbc정리JDBC 등장이유클라이언트가 애플리케이션 서버를 통해 데이터를 저장하거나 조회하면, 애플리케이션 서버는 다음 과정을 통해서 데이터베이스를 사용한다.애플리케이션 서버와 DB - 일반적인 사용법커넥션 연결: 주로 TCP/IP를 사용해서 커넥션을 연결한다.SQL 전달: 애플리케이션 서버는 DB가 이해할 수 있는 SQL을 연결된 커넥션을 통해 DB에 전달한다.결과 응답: DB는 전달된 SQL을 수행하고 그 결과를 응답한다. 애플리케이션 서버는 응답 결과를 활용한다.문제는 각각의 데이터베이스마다 커넥션을 연결하는 방법, SQL을 전달하는 방법, 그리고 결과를 응답 받는 방법이 모두 다르다는 점이다또한, 데이터베이스 종류를 변경하면 애플리케이션 서버에 개발된 데이터베..
[Spring/MVC] 09. 타임리프 - 스프링 통합과 폼
·
Spring/MVC
09. 타임리프 - 스프링 통합과 폼#Spring/MVC정리타임리프 스프링 통합타임리프는 스프링을 위해 기능을 제공한다고 말해도 과할 정도가 아닌 수준의 스프링 통합을 위한 다양한 기능을 제공한다.스프링 통합으로 추가되는 기능스프링의 SpringEL 문법 통합${@myBean.doSomething()}처럼 스프링 빈 호출 지원편리한 폼 관리를 위한 추가 속성th:object (기능 강화, 폼 커맨드 객체 선택)th:field, th:errors, th:errorclass폼 컴포넌트 기능checkbox, radio button, List 등을 편리하게 사용할 수 있는 기능 지원스프링의 메시지, 국제화 기능의 편리한 통합스프링의 검증, 오류 처리 통합스프링의 변환 서비스 통합 (ConversionServic..
[Spring MVC] 08. 타임리프 기본기능
·
Spring/MVC
08. 타임리프 기본기능정리타임리프 사용 선언(스프링 부트에 타임리프를 추가했으면 선언하지 안하도 타임리프 문법이 적용되는 것 같긴 합니다)기본 표현식• 간단한 표현: ◦ 변수 표현식: ${...} ◦ 선택 변수 표현식: *{...} ◦ 메시지 표현식: #{...} ◦ 링크 URL 표현식: @{...} ◦ 조각 표현식: ~{...}• 리터럴 ◦ 텍스트: 'one text', 'Another one!',… ◦ 숫자: 0, 34, 3.0, 12.3,… ◦ 불린: true, false ◦ 널: null ◦ 리터럴 토큰: one, sometext, main,…• 문자 연산: ◦ 문자 합치기: + ◦ 리터럴 대체: |The name is ${name}|• 산술 연산: ◦ Binary ope..
[Spring MVC] 07. 스프링 MVC - 웹 페이지 만들기(타임리프, PRG, RedirectAttribute)
·
Spring/MVC
7. 스프링 MVC - 웹 페이지 만들기(타임리프, PRG, RedirectAttribute)정리Item - 상품 객체, Repository@Datapublic class Item { private Long id; private String itemName; private Integer price; private Integer quantity; public Item() { } public Item(String itemName, Integer price, Integer quantity) { this.itemName = itemName; this.price = price; this.quantity = quantity; }}리포지..
[Spring/MVC] WebMvcConfigurer
·
Spring/MVC
김영한님 Spring MVC 강의를 통해 공부하다가 Spring MVC에 WebMvcConfigurer 라는 확장 포인트가 있다는 점을 알게 되었다. (강의에서는 ArgumentResolver와 MessageConverter를 WebMvcConfigurer에서 확장할 수 있다 정도만 설명하고 넘어감)Spring MVC에는 대부분의 기능이 이미 구현되어 있어 확장 포인트가 많지 않다고 했는데, WebMvcConfigurer에서는 어떤 부분을 확장할 수 있는지 구체적으로 알아보자. WebMvcConfigurer란?WebMvcConfigurer 는 스프링 부트 혹은 스프링 MVC 애플리케이션에서 MVC 관련 설정을 직접 확장하거나 추가할 수 있게 해주는 확장 포인트 인터페이스이다. 스프링 부트가 제공하는 We..
[Web Application] SLF4J를 이용한 로깅
·
WEB/Application
김영한님 Spring MVC 강의를 듣다가 @SLF4J 를 달고 log.info(), log.debug()등을 통해 로그를 출력하는 예제를 공부하다가 SLF4J에 대해 공부를 해본 내용을 정리하게 되었다. 먼저 로깅이 무엇이고 왜 해야하는지를 알아보자. 로깅이란?log를 생성하도록 시스템을 작성하는 행위이다.  로깅은 왜 해야 할까?로그들은 테스트할 때 재현하기 힘든 버그가 개발 완료된 환경에서 발생했을 경우, 그런 버그들에 대한 정보를 알려줄 수 있으며,구문들 사이에 걸리는 시간 등의 성능에 관한 통계와 정보를 제공할 수 있다. 로그가 제공하는 정보의 양은 프로그램이 실행되는 중에도 설정이 가능한 것이 이상적이다.설정이 가능할 때, 로그는 예기치 못한 특정 문제들을 디버그하기 위해 코드를 수정하고 다시..