티스토리 뷰

Programming/Spring

spring 용어정리(1)

글그리 2018. 4. 30. 23:40

개요


spring에서 사용하는 용어들에 대해 정리하는 포스트. spring이 Java 프레임워크이기 때문에 Java의 용어랑 겹치는 개념이 있을 수 있지만 Java를 깊게 공부하지 못하고 spring을 먼저 배우는 사람들을 위해 공통으로 사용되는 용어도 같이 정리한다. 내가 그렇다.






서블릿 servlet


http로 통신하는 서버 구조에서 servlet container에 의해 생성되는 인스턴스. http 요청에 대한 처리 단위라고 보면 될거같다. 예를들어 하나의 요청이 들어오면 해당 요청에 대해 request, response servlet이 인스턴스로 생성된다. 이 때 servlet container는 동일한 요청에 대해 유일한 인스턴스만을 생성한다.

이렇게 생성된 servlet 인스턴스는 get, post 등 http 요청에 대해 특화하여 처리할 수 있다. spring framework의 dispatcher servlet 또한 tomcat에 의해 생성된 servlet이다.




서블릿 컨테이너 servlet container


servlet을 생성하고 관리하는 총괄하는 마스터. 대표적으로 tomcat이 여기에 해당하는데, 예를들어 http 요청이 들어오면 http servlet request, http servlet response 두 객체를 생성해서 동작시킨다. http servlet request 객체는 해당 요청에 맞는 서블릿 클래스의 인스턴스를 생성하고 처리를 맡긴다.




빈 bean


// 18. 4. 30 수정

사용자 클래스의 인스턴스. 또는 bean factory에 의해 생성되는 인스턴스들을 말한다. @Component annotation을 클래스에 설정하면 spring framework의 bean factory가 필요할 때 인스턴스를 생성한다.

설정에 따라 직접 bean으로 만들 클래스를 지정하거나 다른 클래스에 wire시킬 수 있다. 완전히 자동화를 시키려면 범위를 지정해서 자동으로 모든 @Component를 검색하도록 할 수도 있다.

ApplicationContext를 통해 bean을 취득하거나 @Autowired annotation으로 만들어진 bean을 spring framework가 연결시키도록 유도할 수 있다.

구버전에서는 BeanFactory를 지원했지만 버전이 올라가면서 BeanFactory를 상속받아 더 강력한 기능을 추가한 ApplicationContext를 사용하도록 유도한다. (즉, BeanFactory를 사용하면 컴파일할 수 없다.)


bean요소

id

식별자

name

별칭

class

bean 클래스 이름

parent

bean을 상속하는 경우 새로운 bean id

abstract

추상 클래스인지 여부 (false)

singleton

bean을 싱글톤으로 관리할지 여부 (true)

lazy-init

인스턴스 생성시점을 사용할 때로 할지 여부 (default)

autowire

autowire (default)

dependency-check

의존관계 확인 (default)

dependency-on

의존할 bean의 이름

init-method

초기화할 때 실행할 메소드

destroy-method

소멸할 때 실행할 메소드




DI : 의존성 주입 dependency injection


줄여서 DI라고도 하는 디자인 패턴 중 하나이다. 클래스 간의 의존성을 낮춰줘서 재사용성과 코드의 유지보수성을 증가시킨다. 객체가 직접 인스턴스를 생성하지 않고, 사용할 인스턴스를 외부에서 주입해주면 해당 인스턴스를 사용하는 방식이다. spring framework가 사용하는 방식인데 spring framework에서는 xml에 관련 설정을 해 놓으면 타입에 맞게 필요한 클래스의 인스턴스를 spring framework가 자동으로 매핑해준다. 이렇게 매핑된 인스턴스를 bean이라고 한다.




AOP : 관점지향 프로그래밍 Aspect Oriented Programming


개발자로 하여금 비즈니스 로직에 집중할 수 있도록 그 외적인 것들을 외부에서 처리하는 프로그래밍 방법이다. spring의 의존성 주입 특성과 함께 spring framework의 특징이다.

함수를 실행할 때 before, after, around, exception 등 시점에 함수들을 주입해서 실행되도록 하는 것이다.

장점은 로그를 찍거나 예외처리를 하는 등 불필요한 반복을 제거하고 비즈니스로직에만 집중할 수 있다.


용어

Aspect

Advice + Pointcut



Join Point

Advice를 끼워넣을 수 있는 때.

spring에서는 메소드 호출 시작과 끝이며, 이는 제품 사양이기 때문에 임의로 바꿀수 없다.

Joint Point에 Advice를 삽입하는 것을 weaving 이라고 한다. 따라서 AOP를 사용하려면 aspactjweaver 라이브러리를 추가해야한다.



Advice

Join Point에서 실행되는 코드


Before

함수 실행 전


After

함수 실행 후


AfterReturning

함수 반환 후


Around

ProceedingJointPoint 타입 인스턴스를 매개변수로 받는데 이 인스턴스의 proceed()를 호출하면 그 때 함수가 실행된다. 그래서 이 앞뒤로 로그를 찍으면 된다.

순서

before - around - proceed() - around - after


AfterThrowing

예외를 던진 후



Pointcut

Advice를 실행할지 여부를 결정하는 필터



'Programming > Spring' 카테고리의 다른 글

spring tutorial  (0) 2018.05.01
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함