스프링 MVC 모델의 전체적인 동작이다.


Client에서 DispatcherServlet으로 보내고 DispatcherServlet은 servlet-context.xml로 보낸다.


servlet-context.xml에서 controller로 보내는데 context에서 base-package를 스캔하게 된다.

모든 /로 들어온것은 전부 가로채는데 그 중에 <resources mapping~ />은 가로채지않게 된다.

'프로그래밍 > Spring Framework' 카테고리의 다른 글

자바 Spring framework MVC 모델 - Controller  (0) 2018.08.06
자바 Spring Framework 한글 적용  (0) 2018.08.06
Spring AOP  (0) 2018.08.03
Spring Environment 객체  (0) 2018.08.02
스프링 생명 주기와 범위  (0) 2018.08.01

AOP는 aspect-oriented programming의 약자로 관점 지향 프로그래밍을 뜻한다. 즉, JAVA 코드를 바꾸지 않고 밖에서 지켜보겠다는 의미를 가지는 기법을 얘기한다.


하나의 예로 들자면 사용자가 어떤 행동을 하는지 궁금할때 사용자의 로그를 확인 하고 싶어질 것이다. 이렇게 된다면 JAVA코드안에서 사용자의 로그를 확인하는 출력을 하나씩 다 넣어 줘야한다. 이런 것을 간단히, 또한 어떤 클래스에만 적용시키고 싶을 때 이 AOP 기법을 쓴다.


사용하는 방법은 밑에서 알아보고 AOP에 대한 정의에 대해 조금 알아보자.


스프링에서 AOP를 구현하는 방식에는 XML을 이요한 구현과 @Aspect 어노테이션 기반의 구현이 있다. 

AOP와 관련해서 용어가 몇가지 있는데 aspect , advice , jointpoint , pointcut , weaving에 대해 조금씩 알면 되겠다. 자세한 건 실습을 하면서 익히면 더욱 쉽다.




1.Spring의 pom.xml 파일에서 의존 설정을 한다. 의존 설정을 하고 저장을 하면 관련 configuration file들을 자동으로 다운받게 된다.

2. 공통 기능 클래스를 만든다. 공통 기능이라고 하면 로그찍기, 시간재기 등이 있겠다.

3. XML 파일 설정을 한다. xml 파일의 namespaces에 들어가 aop를 체크하면 자동으로 schema를 포함하는 코드가 생성된다.  여기서 bean을 설정하고, aspect에서 logAop(공통 기능 클래스)를 참조하고 pointcut에서 어떤 패키지에 있는 메소드들을 공통 기능을 적용시킬 것인지 설정, around에서 사용할 공통 기능 메소드를 설정하면 끝이 난다.


이것으로 XML을 이용한 AOP 구현이 끝났고 어노테이션을 이용한 AOP 구현에 대해서 알아보겠다.

=========================================================================================================================

어노테이션을 이용한 AOP 구현은 XML을 이용한 AOP 구현에 보다는 최근에 나온 방법이고 더 쉽게 사용가능하다.


 Environment 객체는 외부 IP나 외부에서 필요한 값들을 설정하기 위해 사용하는 객체를 말한다. 즉, 설정값들을 관리하기 위해 사용하는것이다.

외부 설정할 값들을 추가 해주고 마지막까지 찾을 때까지 검색한다. 


classpath만 자신이 원하는 설정한 텍스트 파일로 지정을 해주고 addLast 해주면 env.getProperty로 원하는 설정값을 가져올 수 있다. 모든 저장 되있는 설정 값을 처음 부터 끝까지 찾아 주기 때문에 쉽게 사용 가능하다.


다음은 xml에서 bean 설정을 한뒤 Enviroment 객체가 생성 될때 그 값을 인터페이스한 클래스에서 사용해 변수값 설정을 초기에 해주는 방식이다.

======================================================================================================================

프로퍼티 파일을 직접 사용하여 설정하는 법에 대해서 알아보자.





여기서는 xml 파일의 context classpath가 핵심이다. 이외에도 어노테이션을 이용한 설정방법이 있다.

또 설정을 개발환경, 실제배포 환경에 맞는 IP를 설정하기 위한 환경설정 방법도 있다.

https://www.youtube.com/watch?v=9cDHggH0ENA&list=PLieE0qnqO2kTyzAlsvxzoulHVISvO8zA9&index=71

'프로그래밍 > Spring Framework' 카테고리의 다른 글

자바 Spring framework MVC 모델  (0) 2018.08.06
Spring AOP  (0) 2018.08.03
스프링 생명 주기와 범위  (0) 2018.08.01
스프링을 이용한 객체 생성과 조립(DI 설정)  (0) 2018.08.01
Spring 이란?  (0) 2018.07.31

앞서 살펴본 내용과 같다. 스프링 컨테이너를 생성 할 때 설정 경로를 같이 넣어 주면 생성과 설정을 동시에 할 수 있다. 

설정을 따로 할시에는 ctx.refresh(); 를 꼭 해야한다.


이제 빈의 생명 주기에 대해서 알아보겠다. 빈을 생성하고 종료할 때 어떤 작업을 하고 싶다면 이렇게 사용하면 된다.

첫 번째는 implements를 이용한 방법이다. 처음 클래스를 만들 때 afterPropertiesSet과 destroy를 implement 한다. 그런 후 자신이 원하는 것을 밑에 기재한다.


두 번째 방법은 어노테이션을 이용한 방법이다. implement 하지않고 @PostConstruct 와 @PreDestroy를 어노테이션해서 간단히 쓰면 된다.


=====================================================================================================================

다음은 스프링 빈 범위(scope) 에 대해서 알아보자

 Spring에서는 Bean관리는 기본적으로 싱글톤으로 관리를 한다

하지만 필요에 따라 싱글톤이 아닌 경우가 필요한데, 이를 위해 scope를 이용한다

scope종류는 다음과 같다

 

1. singleton : 기본 싱글톤 스코프

2. prototype : 어플리케이션에서 요청시 (getBean()) 마다 스프링이 새 인스턴스를 생성

3. request : HTTP 요청별로 인스턴스화 되며 요청이 끝나면 소멸 (spring mvc webapplication 용도)

4. session : HTTP 세션별로 인스턴스화되며 세션이 끝나며 소멸 (spring mvc webapplication 용도)

5. global session : 포틀릿 기반의 웹 어플리케이션 용도. 전역 세션 스코프의 빈은 같은 스프링 MVC를 사용한 포탈 어플리케이션 내의 모든 포틀릿 사이에서 공유할 수 있다

6. thread : 새 스레드에서 요청하면 새로운 bean 인스턴스를 생성, 같은 스레드에 대해서는 항상 같은 bean 인스턴스가 반환

7. custom : org.pringframework.beans.factory.config.Scope를 구현하고 커스텀 스코프를 스프링의 설정에 등록하여 사용

 

, request, session, global session의 스코프는 일반 spring 어플리케이션이 아닌, Spring MVC Web Application에서만 사용되는 용도

 

scope를 정의하는 방법은 두가지가 있다.

 

1. XML 사용 

<bean id="~~" class="~~" scope="singleton"/>


2. Annotation 사용

@Scope("singleton")

public class A{ 

}


'프로그래밍 > Spring Framework' 카테고리의 다른 글

자바 Spring framework MVC 모델  (0) 2018.08.06
Spring AOP  (0) 2018.08.03
Spring Environment 객체  (0) 2018.08.02
스프링을 이용한 객체 생성과 조립(DI 설정)  (0) 2018.08.01
Spring 이란?  (0) 2018.07.31

객체를 생성 할 때는 두 가지 방법이 있다. 첫 번째는 객체를 클래스안에 선언하여 그것을 사용하는 것이고 두 번째는 클래스 밖에 객체를 생성하여 클래스에서 불러오는 것이다. 스프링 프레임워크는 두 번째 방법을 채택하고 있다. 이유는 나중에 찾아서 재업로드 할 예정이다.

보는 것과 같이 기존에 사용하던 방식과는 좀 다르게 객체를 선언해줘야 한다. spring 프로젝트 안에 있는 src/main/resources 파일 안에 xml 파일을 하나 만들어 주어 위와 같이 변수를 설정해 주고 객체를 생성해 줘야 한다. 변수를 설정하고 필드가 있으면 필드도 property로 설정을 해줘야한다.


객체를 생성할 때 classpath를 xml로 만들었던 파일로 지정하고 모든 파일의 글을 ctx에 저장한뒤 getBean으로 원하는 클래스 객체를 불러온다. 


필드이름을 선언 해주고 setter 하는 것도 잊지 않아야 한다.


한 가지 팁 # setter로 생성 할 때는 xml에서 property를 사용해주고 # pulbic 생성자를 사용할 때는 xml에서 constructor-arg를 사용한다


※추가 DI 사용하는 이유 : JAVA 파일의 수정 없이 스프링 설정 파일(xml)만을 수정하여 부품들을 생성/조립할 수 있다.

즉, 큰 프로젝트의 유지보수에서 큰 장점을 가지고 있다.



namespace의 기능을 하는 것을 보자. c: 나 p:를 사용하면 constructor-arg나 property 를 간단하게 선언할 수 있다.

이렇게 객체를 불러 올때 한꺼번에 여러개의 클래스를 불러올 수 있다. 


=========================================================================================================================


이제 XML파일을 자바 파일로 바꾸어서 쓰는 방법에 대해서 살펴보겠다.


@Configuration 을 붙여줘야지 사용 가능하다.

@Bean 은 객체를 생성할 때 사용 한다. 생성자에 설정, 프로퍼티에 설정을 동일하게 할 수 있다.

xml을 많이 사용하는지, java를 많이 사용하는지는 재업로드 할 예정이다.


또한 XML파일에 JAVA을, JAVA파일에 XML파일을 사용하는 방법이 있다

'프로그래밍 > Spring Framework' 카테고리의 다른 글

자바 Spring framework MVC 모델  (0) 2018.08.06
Spring AOP  (0) 2018.08.03
Spring Environment 객체  (0) 2018.08.02
스프링 생명 주기와 범위  (0) 2018.08.01
Spring 이란?  (0) 2018.07.31

Spring Framework에 대해서 알아보자




Spring Framework 특징


POJO (Plain Old Java Object)

일반적인 J2EE 프레임워크에 비해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 사용하기 편하고 객체가 가볍다.

POJO 어플리케이션을 빌드하는 것도 가능하고, POJO 에 비-침입적(non-invasively) 으로 엔터프라이즈 서비스를 적용하는 것도 가능하다.


DI (Dependency Injection)

각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.


IoC (Inversion of Control)

컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서, IoC 컨테이너가 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 이 객체를 bean 이라고 한다.


AOP (Aspect-Oriented Programming)

로깅이나 보안, 트랜잭션 등 핵심적인 비즈니스 로직과 관련이 없으나 여러 곳에서 공통적으로 쓰이는 기능들을 따로 분리하여 개발하고 실행 시에 다시 조합할 수 있다.


Data Access

JDBC, iBATIS(MyBatis), Hibernate 등의 데이터베이스에 접속하고 자료를 저장 및 읽어오기 위한 인터페이스를 제공한다.


MVC Pattern

웹 프로그램밍 개발 시 거의 표준적인 방식인 Spring MVC라 불리는 모델-뷰-컨트롤러(MVC) 패턴을 사용한다. 

DispatcherServlet 이 Contoller 역할을 담당하여 각종 요청을 적절한 서비스에 분산, 이를 각 서비스들이 처리, 그 결과를 다양한 형식의 View 서비스로 화면에 표시할 수 있다.


Batch

Quartz 기반으로 특정 시간대에 실행하거나 대용량의 자료를 처리할 수 있다.




'프로그래밍 > Spring Framework' 카테고리의 다른 글

자바 Spring framework MVC 모델  (0) 2018.08.06
Spring AOP  (0) 2018.08.03
Spring Environment 객체  (0) 2018.08.02
스프링 생명 주기와 범위  (0) 2018.08.01
스프링을 이용한 객체 생성과 조립(DI 설정)  (0) 2018.08.01

+ Recent posts