목록Records/Spring Framework (26)
Keep going
스프링 MVC를이용하는 프로젝트의 구성을 이해하는 일은 전체 데이터의 흐름을 보기 위해서이다. 브라우저에서 전송한 데이터를 스프링 MVC 의 어떤 간계를 거쳐서 실행되는지를 이해한다면 문제가 발생했을 때 빠른 대처와 대안을 찾을 수 있기 때문이다. 일반적으로 웹 프로젝트는 3-tier(티어) 방식으로 구성한다. 1. Presentation Tier(화면 계층)는 화면에 보여주는 기술을 사용하는 영역이다. 책의 예제에서는 Servlet/JSP나 스프링 MVC가 담당하는 영역이 된다. Presentation Tier는 프로젝트의 성격에 맞춰 앱으로 제작하거나, CS(Client-Server)로 구성되는 경우도 있다. 2. Business Tier(비즈니스 계층)는 순수한 비즈니스 로직을 담고 있는 영역이다...
4. Model이라는 데이터 전달자 - Controller의 메서드를 작성할 때는 특별하게 Model이라는 타입을 파라미터로 지정할 수 있다. - Model 객체는 JSP에 컨트롤러에서 생성된 데이터를 담아서 잔달하는 역할을 하는 존재다. - 이를 이용해서 JSP와 같은 뷰로 전달해야 하는 데이터를 담아서 보낼 수 있다. - 메서드의 파라미터에 Model 타입이 지정된 경우에는 스프링은 특별하게 Model 타입의 객체를 만들어서 메서드에 주입하게 된다. - Model은 모델 2 방식에서 사용하는 request.setAtrribute()와 유사한 역할을 한다. Servlet에서 모델2 방식으로 데이터를 전달하는 방식 request.setAttribute("serverTime", new java.util.D..
스프링 MVC 를 이용하는 경우 작성되는 Controller의 특징 HttpServletRequest, HttpServeltResponse를 거의 사용할 필요 없이 필요한 기능 구현 다양한 타입의 파라미터 처리, 다양한 타입의 리턴 타입 사용 가능 GET 방식, POST 방식 등 전송 방식에 대한 처리를 어노테이션으로 처리 가능 상속/인터페이스 방식 대신에 어노테이션만으로도 필요한 설정 가능 1. @Controller, @RequestMapping 프로젝트 내 org.zerock.controller 패키지 폴더에 SampleController라는 이름의 클래스 작성 SampleController 클래스 package org.zerock.controller; import org.springframework..
- 스프링은 하나의 기능을 위해서 만들어진 프레임워크가 아니라 '코어'라고 할 수 있는 프레임워크에 여러 서브 프로젝트를 결함해서 다양한 상황에 대처할 수 있도록 개발되었다. - 서브 프로젝트라는 의미는 별도의 설정이 존재할 수 있다라는 개념이다. - Spring Legacy Project 로 생성한 프로젝트도 servlet-context.xml 과 root-context.xml로 설정 파일이 분리된 것을 볼 수 있다. - 스프링 MVC 가 서브 프로젝트이므로 구성 방식이나 설정 역시 조금 다르다고 볼 수 있다. 스프링 MVC 프로젝트의 내부 구조 - 스프링 MVC 프로젝트를 구성해서 사용한다는 의미는 1) 내부적으로 root-context.xml로 사용하는 일반 JAVA 영역(흔히 POJO)과 2) s..
MyBatis란? MyBatis는 'SQL 매핑 프레임워크'로 분류되는데 JDBC 코드의 복잡하고 지루한 작업을 피하는 용도로 많이 사용 전통적인 JDBC 프로그램 MyBatis - 직접 Connection을 맺고 마지막에 close() - PreparedStatement 직접 생성 및 처리 - PreparedStatement의 setXXX() 등에 대한 모든 작업을 개발자가 처리 - SELECT의 경우 직접 ResultSet 처리 - 자동으로 Connection close() 가능 - MyBatis 내부적으로 PreparedStatement 처리 - #{prop}와 같이 속성을 지정하면 내부적으로 자동 처리 - 리턴 타입을 지정하는 경우 자동으로 객체 생성 및 ResultSet 처리 ◆ MyBatis ..
오라클과 SQL DEVELOPER를 설치 완료했다고 가정하고 프로젝트와 JDBC 연결을 해보겠다. ◆ 프로젝트와 JDBC 연결 우선 JDBC 연결을 하려면 JDBC Driver가 필요하다. Oracle 데이터베이스의 JDBC Driver는 11g까지 공식적으로 Maven으로는 지원되지 않기 때문에, 직접 jar 파일을 프로젝트에 추가시켜야 한다. sqldeveloper>jdbc>lib 에 jar파일 존재 추가 할 프로젝트 선택 후 properties 들어가기 JDBC 드라이버가 정상적으로 추가되었고, 데이터베이스의 연결이 가능하다면 눈으로 확인하기 위해 테스트 코드를 작성한다. 테스트 코드는 Java와 JDBC 드라이버만으로 구현해서 먼저 테스트해야 한다. 데이터 베이스 연결이 가능하다면 데이터베이스가 ..
생성자 주입의 경우 객체 생성 시 의존성 주입이 필요하므로 좀 더 엄격하게 의존성 주입을 체크하는 장점이 있다. ◆ 주입할 클래스 ◆ 주입받을 클래스 Setter 를 이용한 주입과 다른점 생성자를 선언하고 Chef를 주입하도록 작성되었다. @Autowired 어노테이션 없이 처리되고 있다. SampleHotel 클래스에 @AllArgsConstructor 어노테이션을 사용하면 생성자 자동 주입과 Lombok이 결합되면서 생성자를 따로 작성해주지 않아도 된다. @AllArgsConstructor는 인스턴스 변수로 선언된 모든 것을 파라미터로 받는 생성자를 작성한다. 만약 여러 개의 인스턴스 변수들 중에서 특정한 변수에 대해서만 생성자를 작성하고 싶다면 @NonNull 과 @RequiredArgsConstr..
스프링에서는 생성자를 이용한 주입과 setter 메서드를 이용한 주입으로 의존성 주입을 구현한다. 설정 방식은 주로 XML이나 어노테이션을 이용해서 처리한다. ◆ porm.xml에 추가하거나 혹은 변경할 라이브러리들 org.projectlombok lombok 1.18.18 provided cs org.springframework spring-test ${org.springframework-version} Colored by Color Scripter cs 3. log4j 버전 1.2.17로 바꿔주기 (안 바꿀시, Lombok 에서 문제 생김) 4. junit 버전 4.12 로 바꿔주기 ◆ src/main/java에 클래스 생성 @Data : Lombok의 setter를 생성하는 기능과 생성자, toSt..