스프링

IoC/DI를 위한 빈 설정 메타정보 작성IoC컨테이너의 기본적인 역할은 코드를 대신해서 애플리케이션을 구성하는 오브젝트를 생성하고 관리하는 것이다.(POJO로 만들어진 애플리케이션 클래스와 서비스 오브젝트들이 그 대상) 빈을 만들기 위한 설정 메타정보는 파일이나 애노테이션 같은 리소스로부터 전용 리더를 통해 BeanDefinition 타입의 오브젝트로 변환된다. 이 BeanDefinition정보를 IoC컨테이너가 활용하게 된다.빈 등록은 빈 메타정보를 작성해서 컨테이너에게 건네주면 된다. => XML 문서, 프로퍼티 파일, 소스코드 애노테이션과 같은 외부 리소스로 빈 메타정보를 작성하고 이를 적절한 리더나 변환기를 통해 애플리케이션 컨텍스트가 사용할 수 있는 정보로 변환해주는 방법을 사용 빈 메타정보 ..
웹 애플리케이션의 컨텍스트 구성방법 가장 많이 사용하는 방법 => 서블릿 컨텍스트(dispatcher-context.xml)와 루트 애플리케이션 컨텍스트(root-context.xml) 계층구조 스프링 웹 기술을 사용하는 경우 웹 관련 빈들은 서블릿 컨텍스트에 두고, 나머지는 루트 애플리케이션 컨텍스트에 등록한다. 루트 컨텍스트는 모든 서블릿 레벨 컨텍스트의 부모 컨텍스트가 된다. 루트 애플리케이션 컨텍스트 등록 => 가장 간단한 방법은 서블릿의 이벤트 리스너를 이용하는 것이다. => 웹 애플리케이션의 시작과 종료시 발생하는 이벤트를 처리하는 리스너 ServlerContextListener를 이용 (ServletContextListener 인터페이스를 구현한 리스너는 웹 애플리케이션 전체에 적용 가능한 ..
IoC컨테이너 계층구조빈의 개수가 많아져서 설정파일이 커지는게 문제라면 파일을 여러개로 쪼개서 만들고 하나의 애플리케이션 컨텍스트가 여러 개의 설정파일을 사용하게하면 그만이다. 하지만 한 개 이상의 IoC컨테이너를 만들어두고 사용해야 할 경우가 있다. 바로 트리 모양의 계층구조를 만들때다. 부모컨텍스트를 이용한 계층구조 효과모든 애플리케이션 컨텍스트는 부모 애플리케이션 컨텍스트를 가질 수 있다.모든 컨텍스트는 각자 독립적인 설정정보를 이용해 빈 오브젝트를 만들고 관리독립적으로 자신이 관리하는 빈을 갖고 있지만, DI를 위해 빈을 찾을 때는 부모 애플리케이션 컨텍스트의 빈까지 모두 검색(필요한 빈을 찾고 없으면 부모 컨텍스트에게 빈을 찾아달라고 요청. 없으면 부모의 부모.. 루트 컨텍스트까지 전달) 중요한..
IoC 컨테이너컨테이너가 코드 대신 오브젝트에 대한 제어권을 갖고 있다고 해서 IoC라고 부른다.(IoC 컨테이너)실제로 스프링 컨테이너 또는 IoC컨테이너라고 말하는 것은 바로 이 ApplicationContext 인터페이스를 구현한 클래스의 오브젝트이다. (BeanFactory 인퍼에스 상속)IoC 컨테이너가 사용하는 빈(bean) 메타정보는 대략 다음과 같다.빈 아이디, 이름, 별칭 : 빈 오브젝트를 구분할 수 있는 식별자클래스 또는 클래스 이름 : 빈으로 만들 POJO 클래스 또는 서비스 클래스 정보스코프 : 싱글톤, 프로토타입과 같은 빈의 생성 방식과 존재 범위프로퍼티 값 또는 참조 : DI에 사용할 프로퍼티 이름과 값 또는 참조하는 빈의 이름생성자 파라미터 값 또는 참조 : DI에 사용할 생성..
스프링에서는 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트를 빈(bean)이라고 부른다.(자바빈 또는 엔터프라이즈 자바빈EJB에서 말하는 빈과 비슷한 오브젝트 단위의 어플리케이션 컴포넌트) 스프링에서는 빈의 생성과 관계설정 같은 제어를 담당하는 IoC오브젝트를 빈 팩토리(bean factory)라고 부른다. 빈 팩토리보다는 이를 좀 더 확장한 애플리케이션 컨텍스트(application context)를 주로 사용한다. 스프링 IoC의 용어 정리빈(bean)스프링이 IoC방식으로 관리하는 오브젝트라는 뜻(스프링이 직접 생성과 제어를 담당하는 오브젝트만을 빈이라고 부른다.)빈 팩토리(bean factory)IoC를 담당하는 핵심 컨테이너를 가리킨다. 빈을 등록하고, 생성하고, 조회하고 돌려주..
1. POJO 기반의 구성스프링은 다른 프레임워크들과 달리 관계를 구성할 때 별도의 API을 사용하지 않는 POJO의 구성만으로 가능하도록 제작되어있음 이것이 중요한 이유는 코드를 개발할 때 개발자가 특정한 라이브러리나 컨테이너의 기술에 종속적이지 않다는 것을 의미함개발자는 가장 일반적인 형태로 코드를 작성하고, 실행할 수 있기 때문에 생산성에서도 유리하고, 코드에 대한 테스트 작업 역시 좀 더 유연하게 할 수있다는 장점이 생김 2. 의존성 주입(DI)를 통한 객체 간의 관계 구성"제어의 역행"메소드나 객체의 호출작업을 개발자가 결정하는 것이 아니라, 외부에서 결정되는 것을 의미 개발자는 필요한 부분을 개발해서 '끼워 넣기'의 형태로 개발하고, 실행하면 됨제어의 역전은 스프링에서만 있는 개념일까?=> 제..
스프링을 이용한 파일업로드 프로젝트=> https://github.com/ksh901016/file-upload 웹에서 파일 업로드는 일반적으로 "multipart/form-data"라는 방식으로 데이터를 전송하며,스프링MVC에서는 multipart형식으로 전송된 데이터를 핸들링할 수 있는 기능을 지원해준다.=> 스프링 MultipartResolver 사용 우선 사용할, multipartResolver를 빈으로 등록해 준다.(dispatcher-context.xml에 등록)123 Colored by Color Scriptercs스프링이 기본으로 제공하는 MultipartResolver는 CommonsMultipartResolver 이다.CommonsMultipartResolver는 CommonsFileU..
AOP(Asepect Oriented Programming) 기능기존의 비즈니스로직 외 작성해야 하는 코드를 별도로 분리함으로써 개발자가 좀 더 비즈니스 로직에만 집중해서 처리할 수 있는 방법을 제공=> 비즈니스로직이 아닌 공통적이고 반족적인 코드를 처리하기 위한 방법 AOP와 트랜잭션 처리를 통해서 다음과 같은 기능을 완성 할 수 있음개발자가 원하는 코드를 실행하는데 얼마나 시간이 소모되는지 쉽게 알 수 있다.개발자는 메소드에 전달되는 파라미터나 리턴 값에 대해서 로그를 기록할 수 있다.데이터베이스 상에서 트랜잭션 처리를 설정하여, 성공하는 경우에만 모든 데이터가 완전하게 처리되는 방법 적용할 수 있다. AOP에서 'Aspect'란=> '비즈니스 로직은 아니지만, 반드시 해야하는 작업', '반드시 해야..
Controller에 요청이 들어오기전에 무엇인가를 수행한다는 기능만 보면 interceptor와 filter는 무척 비슷해 보인다. (전, 후처리기 역할을 수행한다.)위의 사진을 보면 차이점을 쉽게 알 수 있는데, 둘다 컨트롤러 전에 작업을 처리하는 용도로 사용되지만 호출되는 시점이 다르다.필터(Filter)는 dispatcherServlet으로 요청이 가기전에 실행되고인터셉터(Interceptor)는 Controller로 요청이 가기전에 실행이된다. FilterDispatcherServlet 앞단에서 정보 처리J2EE 표준스펙에 정의되어 있는 기능InterceptorDispatcherServlet에서 Handler(Controller)로 가기전에 정보 처리SpringFramework에서 자체적으로 제..
Spring framework Annotation 개념 XML : 분리- 결합도를 낮추고 유지보수성을 높이기 위해 xml로 설정하였으나 xml이 너무 많아지면 오히려 유지보수성이 낮아지는 아이러니한 상황 발생- 유지보수성에 방점- 시스템 전체에 영향을 주고 이후에 변경 가능성이 있는 것은 xml로 설정.https://medium.com/@2xel/spring-framework-annotation-%EA%B0%9C%EB%85%90-c26c15716538 @Component 태그를 추가하면 어노테이션이 적용된 클래스를 빈으로 등록하게된다. 태그는 어노테이션과 관련해서 BeanPostProcessor를 함께 등록한다.@Required(RequiredAnnotationPostProcessor)@Autowired..
깡냉쓰
'스프링' 태그의 글 목록 (2 Page)