IT Study/Spring19 Spring - @를 통한 Controller/HandlerMapping/Command 세팅 이번에는 @를 통하여 Controller/HandlerMapping 세팅을 해보았다. 이전에 작업한 Controller와 HandlerMapping은 본인이 dispatcherServlet.xml 에서 key/value값 controller 객체 생성 등을 직접 해주었어야 했다. 먼저 @ 설정을 하려면 스프링 컨테이너가 내가 설정한 패키지 범위를 스캔해야 하기 때문에 DispatcherServlet.xml 파일의 네임스페이스에서 Context를 추가해주었다. 이후 applicationContext.xml 을 사용하지 않기 때문에 패키지 범위 스캔과 @를 사용할 태그, JDBC 템플릿 설정을 DS에서 해주었다. @Controller 객체 DS를 통해 사용자의 요청을 수행할 Controller 클래스.. 2023. 1. 2. Spring - Springframework에서 제공하는 클래스를 이용한 MVC 패턴 동작 이번엔 내가 직접 만든 DispatcherServlet/Controller/HandlerMapping/ViewResolver 대신 Spring에서 제공하는 클래스를 통하여 작업해보았다. 1. *do 요청을 했을 때 web.xml이 반응하여 서블릿 컨테이너에서 서블릿 객체를 생성 이 때 web.xml에 등록되어있던 '내가 만든 DispatcherServlet'을 Spring에서 제공하는 DS로 교체한다. 2. DispatcherServlet 만들기 1) 프로젝트/src/main/webapp/WEB-INF 폴더에 생성해준다. 2) web.xml에서 등록한 서블릿의 이름-servlet.xml로 파일을 생성해야만 한다. 3. 필터 클래스 생성 필터는 서블릿 종류이기 때문에 web.xml에 설정해야.. 2023. 1. 2. Spring - Spring MVC Spring 형식의 FrontController 역할을 하는 서블릿을 DispatcherServlet이라 한다. DispatcherServlet을 생성하는 순간 web.xml 파일에서 자동으로 서블릿 매핑을 하고 있다.(오류가 있는 경우 스키마의 j를 대문자로 변경하자) DispatcherServlet - DispatcherServlet는 Action 역할을 수행하는 Controller 들을 호출해서 사용자의 요청을 처리함 - 자신이 직접 C들을 호출하지 않고, HandlerMapping을 통해서 호출함 package com.kim.biz.controller; import java.io.IOException; import javax.servlet.ServletException; import jav.. 2023. 1. 2. Spring - jdbcTemplate 클래스 JDBC 템플릿 메서드 패턴 중 하나인 JdbcTemplate 클래스 활용하기 템플릿 메서드 패턴 - 반복적인 로직을 가지는 부분을 캡슐화해서 사용 - 코딩 순서가 정형화된 기술을 재사용하기 용이하게 모듈화 해놓은 것 1) 라이브러리 추가 pom.xml commons-dbcp commons-dbcp 1.4 //applicationContext.xml 에서 new할 때 오류나는 경우 추가 org.springframework spring-jdbc ${org.springframework-version} 2) jdbcTemplate에서 활용할 DataSource가 필요 DataSource를 applicationContext.xml에서 생성 *DataSource는 @으로 바꿀 수 없다. 3) DataS.. 2023. 1. 2. Spring - aop 설정을 @(어노테이션)으로 설정하기 applicationContext.xml에서 스프링 컨테이너에게 aop설정을 어노테이션으로 한다는 것을 안내해주어야 한다. @을 통한 aop 설정 순서 1) 포인트컷 설정 - 내가 연결하고자하는 횡단관심이 작성된 클래스에서 설정 가능 - @Pointcut("패키지가 포함된 클래스명") 으로 설정 2) 횡단관심 설정 - @시점설정("포인트컷()") 으로 설정 3) 포인트컷 + 횡단관심 결합 - @Aspect 사용 포인트컷과 횡단관심을 연결할 클래스 AfterReturning / AfterThrowing / Around인 경우의 시점 설정 하지만 불편한 점이 발생하는데, 바로 Pointcut이 반복되는 점이다. 매번 모든 클래스에서 Pointcut을 작성해주어야 하는데 이에 대한 해결방법은 Poi.. 2023. 1. 2. Spring - JoinPoint / 바인드 변수 Joinpoint 현재 수행중인 포인트컷 joinpoint를 인자로 가지게 되면(ex.pjp) 현재 수행중인 비즈니스 메서드의 시그니처 등을 알 수 있다. JoinPoint가 제공하는 메서드 1) Signature getSignature() - 클라이언트가 호출한 메소드의 시그니처 (리턴타입, 이름, 매개변수) 정보가 저장된 Signature 객체를 리턴 2) Object getTarget() - 클라이언트가 호출한 비즈니스 메서드를 포함하는 비즈니스 객체를 리턴 (해당 클래스 객체를 리턴) 3) Object[] getArgs() - 클라이언트가 메서드를 호출할 때 넘겨준 인자 목록을 Object 배열로 리턴 getSignature() 메서드가 리턴하는 Signature 객체가 제공하는 메서드 1.. 2023. 1. 2. Spring - AOP(Aspect Oriented Programming) 설정 AOP(Aspect Oriented Programming) 관점지향 프로그래밍 핵심로직(비즈니스메서드,CRUD) 에는 공통적으로 들어가는 로직이 존재 == 공통로직(횡단관심) ex)로깅, 예외처리, 트랜잭션, 보안(인증,인가,허가 등) 어떤 횡단관심을 어떤 핵심로직에 연결할지 '설정' 하는 것을 AOP 설정이라 표현 Advice(LogAdvice) 횡단관심 - 로깅에 대한 공통로직을 만듦 동작 시점은 각 aop 시점마다 다름 스프링 AOP 설정 1) pom.xml에서 aspectj-version 설정 org.aspectj aspectjrt ${org.aspectj-version} org.aspectj aspectjweaver 1.8.8 2) 네임스페이스에서 aop 추가 3) appl.. 2023. 1. 2. Spring - 필드 주입(어노테이션 주입방식) xml의 단점 1) 너무 복잡하다 2) 의존관계를 파악하기가 어렵다 개발자들은 java 코드와 함께 의존관계를 파악하는 것을 선호 => 자바 코드에 xml 설정을 추가 어노테이션 사용방법 1) context 네임스페이스를 추가 2) 어노테이션을 컨테이너가 사전에 스캔할 예정 => 스캔 범위를 지정해주어야 함 3) 등록없이 자동으로 객체 생성가능 @component : 해당 클래스를 객체화해라 java = new VO(); xml == 어노테이션 == @component("vo") =>> bean을 대체하는 어노테이션이 컴포넌트 4) 의존성 주입(DI) @Autowired - 멤버변수 뿐 아니라 메서드, 생성자에서도 사용 가능 해당 멤버변수의 타입을 체크 메모리를 확인해서 해당 멤버변수와 같.. 2023. 1. 2. Spring - 제어의 역행(IoC), 생성자 인젝션(생성자 주입방식) 프레임 워크 개발을 어떻게 해야하는지 아웃라인을 제공 spring 프레임워크를 사용하는 이유? 1) 프레임워크를 사용하기 때문에 개발시간이 단축된다. 2) 관리가 용이 = 유지보수 용이 3) 개발자들의 실력이 상향 평준화 4) 스프링 프레임워크가 뭔지 한마디로 표현하자면? "IoC와 AOP를 지원하는 경량의 프레임워크" IoC(Inversion of Controll) - 제어의 역행 > 낮은결합도 제공 AOP(Aspect Oriented Programming) - 관점지향 프로그래밍 > 높은 응집도 제공 경량 -> .java 파일을 사용 == POJO(서블릿이 아닌 일반 .java 파일) 제어의 역행(Inversion of Control) 지금까지는 사용자의 요청에 따라 FrontControlle.. 2023. 1. 2. 이전 1 2 3 다음