Spring(8) - HandlerMapping, HandlerAdapter 들어는 봤지만 정확한 개념에 대해서는 모르는 HandlerMpping, HandlerAdapter에대해서 공부해보았다. HandlerMapping이 찾은 컨트롤러를 HandlerAdapter에 요청을 해서 그 결과값을 가져오는 것이 스프링 MVC의 흐름인데, 왜 ControllerMapping이나 ControllerAdapter라고 하지는 않을까? 그리고 DispatcherServlet에 ModelAndView로 처리결과를 리턴해야하는데, 모든 결과가 ModelAndView 형태로 리턴되지는 않는데 어떻게 가능할까? 이런 궁금증들을 해결해보고자 여러 교재와 문서를 참고했다. HandlerMapping - HandlerMapping은 클라이언트가 요청이오면 그 요청에맞는 컨트롤러(핸들러)를 찾아준다. 여기.. Spring(7) - HandlerInterceptor 요청경로마다 접근제어를 다르게 해야하고 사용자가 특정 URL을 요청할 때마다 내역을 기록하고 싶다면 여러가지 방법이 있을 수 있다. AOP를 사용한다거나 interceptor 두가지 방법이 있는데 AOP는 너무 범용적인 방법이기 때문에 스프링 MVC가 제공하는 HandlerInterceptor를 사용하는 것이 좋다. HandlerInterceptor를 사용하면 다음의 세가지 시점에 공통기능을 적용할 수 있다. 컨트롤러(핸들러) 실행 전 - preHandler 컨트롤러(핸들러) 실행 후 - postHandler 뷰를 실행한 이후 - afterCompletion 1. preHandler - preHander()메서드를 사용하면 컨트롤러/핸들러 객체를 실행하기 전에 공통기능을 구현할 수 있다. 주로 접근권한이.. 알고리즘(1) - 시간복잡도, 공간복잡도 알고리즘을 만들고 해결할 때 성능의 판단은 시간복잡도와 공간복잡도에 맡기게 된다. 예를들어 다음과같은 알고리즘이 있다고 해보자. public class algorithm{ public static void main(String [] args){ int a = 10000; for(int i=0; i Oracle(1) - SQL기본 필자는 데이터베이스 언어로 ORACLE을 사용하기 때문에 ORACLE에 맞는 내용을 작성할 것이다. SQL이란 관계형 데이터베이스를 처리하기 위해 고안된 언어로 독자적인 문법을 갖는 DB언어이다. 먼저 SQL의 종류에 대해서 알아보겠다. DML - 데이터 조작어로 SELECT, INSERT, DELETE, UPDATE를 사용해 작업을 할 수 있다. TCL - 트랜잭션 관련 문장으로 DML에 의해 변경된 내용을 관리한다. COMMIT, ROLLBACK를 사용한다. DDL - 데이터베이스의 객체를 CREATE(생성), ALTER(수정), DROP(삭제)할 때 사용한다. DCL - 오라클에 접속하는 계정에게 권한을 주거나(GRANT) 뺏는(REVOKE)작업을 할 때 사용한다. 1. SELECT 사용법 - SE.. Spring(6) - 스프링 MVC프로젝트 먼저 Spring MVC프로젝트를 만들기위한 순서를 알아보겠다. 1. maven 웹 프로젝트 생성하기 - maven 웹프로젝트를 생성하면 jar파일들을 일일히 다운로드받을 필요없이 pom.xml에서 의존설정을 하면된다. - 프로젝트를 생성하면 src/main/java, src/main/resources, src/main/webapp 세 디렉토리를 생성한다. - 각각 자바파일, xml등 지원파일, 웹 어플리케이션 생성파일을 담는 디렉터리를 의미한다. 2. web.xml 설정하기 - dispatcherServlet, encodingFilter 설정을 해준다. dispatcher org.springframework.web.servlet.DispatcherServlet contextConfigLocation 경.. Spring(5) - AOP(관점지향프로그래밍) 이번에는 스프링의 핵심 기능 중 하나인 AOP에 대해서 알아보려고한다. AOP란? AOP란 OOP(객체지향프로그래밍)의 단점(상속, 위임을통한 구현)을 극복해서 나온 기법으로 공통기능을 핵심로직에 삽입하는 형식의 기법이다. AOP기법에서는 공통기능을 직접 호출하지않고 AOP라이브러리가 알맞게 삽입해준다. AOP의 주요용어 Advice - 언제 공통기능을 핵심로직에 적용할 지를 나타낸다. ex) 메서드 호출 전(언제)에 트랜잭션 시작기능(공통기능)을 적용한다. Joinpoint - Advice를 적용 가능한 지점을 의미한다. 메서드 호출, 필드 값 변경등이 해당된다. Pointcut - Joinpoint의 부분집합으로 실제로 Advice가 적용되는 Joinpoint를 나타낸다. AspectJ를 통해 정의한.. Spring(4) - 빈의 생명주기와 범위 기본적으로 스프링 컨테이너의 생명주기는 [객체 생성 -> 프로퍼티설정 -> 초기화 -> 사용 후 소멸]이라는 라이프 사이클을 가지고 있다. 스프링은 객체의 초기화와 소멸 과정을 위해 두가지의 인터페이스를 제공해준다. o.s.beans.factory.InitializingBean : 빈의 초기화 과정에서 실행될 메서드를 정의 o.s.beans.factory.DisposableBean : 빈의 소멸 과정에서 실행될 메서드를 정의 두가지의 인터페이스는 다음과 같이 정의되어있다. public interface InitializingBean{ void afterPropertiesSet() throws Exception; } public interface DisposableBean{ void destroy() th.. Spring(3) - @Autowired, @Resource 사용하기 객체간 DI를 설정할 때 설정 코드를 줄이기 위해서는 객체간 의존을 자동설정해주는 @Autowired, @Resource를 이용하면 불필요한 코드들을 줄일 수 있다. 이런 애노테이션은 메서드, 생성자, 필드에 모두 사용할 수 있다. 가장먼저, 를 선언해서 다수의 스프링 전처리기를 등록한다. @Autowired는 타입에맞는 빈을 자동설정 하고, @Resource는 이름에 맞는 빈을 자동설정한다. (1) @Autowired 애노테이션 적용 프로퍼티의 필수 여부 지정 스프링은 @Autuwired를 발견하면 자동으로 그에 맞는 빈을 설정한다. 하지만 그에 맞는 빈을 찾지 못한다면 다음과 같은 익셉션을 발생시킨다. ...expected at least 1 bean...(적어도 1개의 빈...) 이런 익셉션이 발생.. 이전 1 2 3 4 5 6 다음