Spring_DI와 AOP(DI사용론)_5~6

1. 콩이란?

자바빈즈: 재사용 가능한 구성 요소, state(iv), getter&setter, 인수 없는 생성자

서블릿 및 JSP 빈: MVC 모델 역할, EL, 범위 및 JSP 컨테이너 관리

EJB 엔터프라이즈 자바 빈즈: 대기업에서 주로 사용, EJB 컨테이너에서 관리하는 복잡한 규칙(관리? bean 생성, 파기)

봄 콩: POJO 레벨 이전 Java 오브젝트. 간단한 독립형 Spring 컨테이너 관리


2. BeanFactory 및 애플리케이션 컨텍스트


콩: Spring Container에 의해 유지 물체
펜 컨테이너: 콩 저장Bean 저장 및 관리(생성, 소멸, 연결)
콩 공장 : 빈 생성, 연결 등 기본 기능으로 정의된 인터페이스 (콩을 만드는 공장)
애플리케이션 컨텍스트 : BeanFactory 확장그래서 여러가지 기능이 추가되었습니다 상호 작용


3. ApplicationContext의 종류

다양한 유형의 ApplicationContext 구현 제공


※ 최근 트렌드는 Java 코드를 많이 사용하는 것입니다. XML 및 Java 코드와 유사합니다.
예) 반대 @bean


4. 루트 AC 및 서블릿 AC






5. 애플리케이션 컨텍스트의 주요 메서드

비워지다
물체 getBean(클래스 필수 유형, 개체…인수)
물체 getBean(클래스 필수 유형)
물체 getBean(문자열 이름, 클래스 필수 유형)
물체 getBean(문자열 이름, 객체… 인수)
물체 getBean(문자열 이름)
싱글톤 의식 원기 여부를 확인할 때
부울 isPrototype(문자열 이름)
부울 isSingletontype(문자열 이름)
부울
isTypeMatch(문자열 이름, 클래스 typeToMatch)
부울
isTypeMatch(문자열 이름, ResolvableType typeToMatch)
콩 있어?
부울 containsBean(문자열 이름)
부울 containsBeaDefinition(String neanName)
부울 containsLocalBean(문자열 이름)
의견이 있습니까?
부울
findAnnotationOnBean(문자열 beanName, classAnnotationType)
정의된 콩의 수
내부 getBeanDefinitionCount()
정의된 bean의 이름
끈() getBeanDefinitionNames()

루트 WebApplicationContext를 얻는 방법



package com.fastcampus.ch3;

import java.util.*;

import org.springframework.beans.factory.annotation.*;
import org.springframework.context.*;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.context.*;
import org.springframework.web.context.support.*;

import javax.servlet.*;
import javax.servlet.http.*;

@Controller
public class HomeController {
	@Autowired
	WebApplicationContext servletAC; // Servlet AC

	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String home(Locale locale, HttpServletRequest request, Model model) {
		// 원래는 request.getServletContext()지만, 컨트롤러는 HttpServlet을 상속받지 않아서 아래와 같이 해야함.
		ServletContext sc = request.getSession().getServletContext(); // ApplicationContextFacade
		WebApplicationContext rootAC = WebApplicationContextUtils.getWebApplicationContext(sc); // Root AC

		System.out.println("webApplicationContext = " + rootAC);
		System.out.println("servletAC = " + servletAC);

		System.out.println("rootAC.getBeanDefinitionNames() = " + Arrays.toString(rootAC.getBeanDefinitionNames()));
		System.out.println("servletAC.getBeanDefinitionNames() = " + Arrays.toString(servletAC.getBeanDefinitionNames()));

		System.out.println("rootAC.getBeanDefinitionCount() = " + rootAC.getBeanDefinitionCount());
		System.out.println("servletAC.getBeanDefinitionCount() = " + servletAC.getBeanDefinitionCount());

		System.out.println("servletAC.getParent()==rootAC = " + (servletAC.getParent() == rootAC)); // servletAC.getParent()==rootAC = true
		return "home";
	}
}

로그 분석



참조 :

봄의 화신 남궁성