본문 바로가기

교재 실습253

1.1 대한민국 IT 개발자 직군의 종류 대한민국(전세계적으로 비슷하다) IT 산업에서 개발자 직군으로 어떤 종류가 있는지 살펴보면, 과거에는 대다수가 자바 기반 웹 서버 개발자였는데 현재는 다양한 직군이 늘어나고 있다. - 웹 백엔드 개발자 : 자바, C#, 루비 파이썬 등의 언어로 서버 쪽 로직을 개발하는 역할을 한다. 대부분 데이터베이스도 잘 알아야 한다. 일부 프론트엔드 개발도 담당하는 경우가 일반적이다. - 웹 프론트엔드 개발자 : HTML/CSS, 자바스크립트를 주로 사용하며 디자이너와 협업하는 개발자다. 최근에는 jQuery, Angular.js, React.js 와 같은 라이브러리도 잘 사용해야 하고, node.js 를 통해 웹 백엔드 개발까지 가능하다. - 모바일 앱 개발자 : 자바 기반 안드로이드 개발자와 오브젝티브 C(또는 .. 2024. 3. 5.
1장 첫 번째 양파 껍질 벗기기 양파 껍질을 벗기듯 학습한다는 것의 의미는, 한 번에 한 가지 지식을 깊이 있게 학습하는 것에 집중하기 보다 다양한 분야의 얕은 지식을 학습한 후 일정 수준이 되면 다음 단계의 깊은 지식으로 서서히 깊이를 더해가라는 의미이다. 최소한의 지식을 습득해 일단 만들어 보는 경험을 하며 첫 번째 양파 껍질을 벗긴 후 두 번째 양파 껍질을 벗기기 위해 도전하는 방식으로 학습하라는 조언이다. 이 장은 첫 번째 양파 껍질을 벗기도록 도움을 주기 위한 가이드 문서를 제공한다. 기술적으로 학습할 내용뿐만 아니라 개발할 때 참고할 웹 사이트, 학습 방법 등에 대해서 다루고 있다. 이 가이드 문서에서 제공하는 내용을 한 번에 학습하려기 보다 현재 자신의 관심사에 초점을 맞춰 학습 계획을 세운 뒤, 마음의 여유를 가지고 도전.. 2024. 3. 5.
152. 스프링 IoC 컨테이너 적용 (2) # DAO와 페이지 컨트롤러에 스프링 어노테이션 적용 빈 설정 파일(beans.xml)에 선언된 대로 스프링 IoC 컨테이너는 spms 패키지 및 그 하위 패키지의 클래스 중에서 @Component 어노테이션이 붙은 클래스를 찾아 인스턴스를 생성한다. 실습 프로젝트에서 DAO와 페이지 컨트롤러에 대해 자동으로 객체를 생성하도록 이 어노테이션을 붙여 본다. spms.dao.MySqlMemberDao 클래스를 다음과 같이 변경한다. package spms.dao; import java.util.HashMap; import java.util.Hashtable; import java.util.List; import org.apache.ibatis.session.SqlSession; import org.apach.. 2022. 11. 15.
151. 스프링 IoC 컨테이너 적용 (1) 이번 절에서는 실습 웹 프로젝트 'SPMS'에 스프링 IoC 컨테이너를 적용해 본다. 지금까지는 우리가 만든 ApplicationContext 클래스를 사용하여 자바 객체를 관리하였지만, 이제 스프링 IoC 컨테이너를 사용하여 mybatis나 Dao, 페이지 컨트롤러 등의 자바 객체를 관리해 본다. 1. mybatis 관련 의존 라이브러리 추가 스프링 IoC 컨테이너에서 mybatis를 사용하려면 mybatis를 스프링과 연결해 주는 라이브러리가 필요하다. 또한, JDBC와 관련된 스프링 라이브러리를 추가해야 한다. Gradle 설정 파일(web08/build.gradle)을 열고 다음과 같이 'mybatis-spring' 및 'spring-jdbc' 라이브러리를 추가한다. dependencies { c.. 2022. 11. 14.
150. Gradle 적용 이번 절에서는 실습 웹 프로젝트 'SPMS'에 Gradle을 적용해 본다. Gradle을 사용한 의존 라이브러리 관리 방법을 경험해 본다. 1. Gradle 적용 준비 Git 저장소에서 가져온 'Lesson08'프로젝트(교재에서 제공하는 프로젝트)의 step01 폴더에 들어 있는 소스를 실습 프로젝트 'web08' 폴더로 복사한다(그림 1). step01 폴더의 파일은 이전 장에서 실습한 웹 프로젝트 파일(web07 프로젝트)를 Gradle 구조에 맞게 준비한 것이다. - 프로젝트의 자바 소스 폴더 구조 web08 프로젝트는 Gradle 프로젝트이기 때문에 7장에서 만든 프로젝트의 폴더 구조와 다르다. web08 프로젝트의 소스 폴더 구조는 다음과 같다. 가) src/main/java는 Gradle 프로.. 2022. 11. 13.
149. 빈 자동 등록 이번 절에서는 컴포넌트 스캔과 어노테이션을 이용해 빈을 자동 등록하는 방법을 배워본다. 방법은 다음과 같다. 1) 빈 생성 대상이 되는 클래스에 @Component 어노테이션으로 표시를 한다. 2) 스프링 IoC 컨테이너는 @Component가 붙은 클래스를 찾아 빈을 생성한다. 스프링에서는 @Component 외에 클래스를 관리하고 이해하는데 도움을 주기 위해 클래스의 역할에 따라 붙일 수 있는 어노테이션을 추가로 제공한다. 다음 표는 빈 생성 대상 클래스임을 표시할 때 붙일 수 있는 어노테이션 목록, 즉 자동으로 생성할 빈을 지정하는 어노테이션 목록이다. 어노테이션 설명 @Component 빈 생성 대상이 되는 모든 클래스에 대해 붙일 수 있다. @Repository DAO와 같은 퍼시스턴스(pers.. 2022. 11. 11.
148. 어노테이션을 이용한 의존 객체 자동 주입 (2) 3. @Qualifier로 주입할 객체를 지정하기 @Autowired는 프로퍼티에 주입할 수 있는 의존 객체가 여러 개 있을 경우 오류를 발생시킨다. 즉 같은 타입의 객체가 여러 개 있으면 그 중에서 어떤 객체를 주입해야 할지 알 수 없기 때문이다. 이 경우 어노테이션 @Qualifier를 사용하면 손쉽게 해결할 수 있다. @Qualifier는 빈의 이름(또는 아이디)으로 의존 객체를 지정할 수 있다. 이 어노테이션을 사용하려면 빈의 후 처리기(bean post processor)가 필요하다. 이런식으로 하다보면 어노테이션을 사용할 때마다 그 어노테이션을 처리할 객체를 등록해야 하는 불편함이 발생한다. 이런 불편함을 해소하기 위해 스프링에서는 어노테이션 처리와 관련된 빈(bean post processo.. 2022. 11. 10.
147. 어노테이션을 이용한 의존 객체 자동 주입 (1) 스프링에서는 자바 어노테이션을 이용해 간단히 의존 객체를 주입할 방법을 제공해 준다. 빈의 셋터 메서드에 @Autowired를 선언하면 빈 컨테이너가 셋터의 매개변수 타입과 일치하는 빈을 찾아 자동으로 설정해 준다. 이 기능을 이용하려면 빈 설정 파일에 다음 객체를 선언해야 한다. AutowiredAnnotationBeanPostProcessor 클래스는 빈의 후 처리기(post processor)로서 빈을 생성한 후 즉시 @Autowired로 선언된 셋터를 찾아서 호출하는 역할을 수행한다. 즉 @Autowired가 붙은 프로퍼티에 대해 의존 객체(프로퍼티 타입과 일치하는 빈)를 찾아 주입(프로퍼티에 할당)하는 일을 한다. 실습을 통해 확인해 본다. 1. @Autowired 적용 - 실습 패키지 생성 e.. 2022. 11. 9.
146. 날짜 값 주입 (2) 2. 커스텀 프로퍼티 에디터 활용 앞의 방식의 문제는 날짜 프로퍼티 값을 설정할 때마다 팩톻리 메서드 빈을 선언해야 한다는 것이다. 이런 불편한 점을 해결하기 위해 스프링 IoC 컨테이너는 프로퍼티 에디터를 도입하였다. '프로퍼티 에디터(property editor)'란, 문자열을 특정 타입의 값으로 변환해 주는 객체이다(그림 1). 스프링에서는 java.util.Date처럼 자주 사용하는 타입에 대해 몇 가지 프로퍼티 에디터를 제공한다. 날짜 형식의 문자열을 java.util.Date 객체로 변환해 주는 CustomDateEditor 클래스와 URL 형식의 문자열을 java.net.URL 객체로 변환해 주는 URLEditor 클래스 등이 있다(그림 2). 그 외 프로퍼티 에디터 클래스들은 스프링 API.. 2022. 11. 8.