Spring Framework - 인터뷰 질문의 핵심 개념

목차

1. Spring 프레임워크의 역할은 무엇인가?

2. DI란?

3. AOP란?

4. 스프링 공통 주석

5. Spring의 디자인 패턴

6. Spring에서 지원하는 여러 bean의 범위

7. Spring에서 Bean의 생명주기는 무엇인가?

8. Spring의 트랜잭션 관리

9. Spring에는 여러 가지 의존성 주입 방법이 있습니다.

10. Spring의 설정 방법은 무엇인가


1. Spring 프레임워크의 역할은 무엇인가?

주요 요점:

Spring은 주로 엔터프라이즈 수준 애플리케이션의 개발을 단순화하기 위한 오픈 소스 프레임워크입니다. IOC 및 AOP 컨테이너 프레임워크입니다. 핵심 기능은 다음과 같습니다.

(1) DI는 주입 용기에 의존하여 인터페이스 지향 및 모듈식 개발을 실현합니다.

(2) AOP는 Aspect 컨테이너를 지향하여 프로그램의 동적 통합 향상을 실현합니다.

(3) 다양한 ORM 기술에 대한 세션 관리 및 선언적 트랜잭션 관리를 제공하여 데이터 계층 개발을 단순화합니다.

(4) 우수한 SpringMVC 프레임워크를 제공하고, 인터페이스 계층의 개발을 단순화하며, 다른 MVC 프레임워크를 쉽게 통합합니다.

(5) Spring Boot 빠른 구성 및 Spring Cloud 마이크로서비스 아키텍처를 제공합니다. NoSQL, 빅 데이터, 분산 기술 등과 같은 다양한 엔터프라이즈급 기술의 구현을 단순화합니다.

2. DI란?

주요 요점:

DI(Dependency Injection)는 의존성 주입 또는 IOC(Inversion of Control)를 말하며, 프로그램에서 객체가 의존하는 하위 객체가 하드코딩으로 생성되지 않고 런타임에 컨테이너(예: Spring)를 통해 주입됨을 의미합니다. .

    DI는 모듈이 구현 클래스가 아닌 인터페이스에만 의존하도록 하므로(실행 클래스는 런타임 시 컨테이너에 의해 주입됨) 소프트웨어 모듈을 독립적으로 개발하고 테스트할 수 있으므로 결합 정도가 줄어듭니다.

3. AOP란?

주요 요점:

AOP(Aspect Oriented Programming) 관점 지향 프로그래밍. 원래 코드를 수정하지 않고 메서드에 향상된 코드를 삽입하는 방법입니다. AOP는 프록시 모드 또는 동적 프록시를 통해 외부 코드를 원래 프로그램에 짜넣습니다. AOP의 일반적인 애플리케이션 시나리오는 트랜잭션, 로그, 권한, 예외 처리 등입니다.

AOP는 "교차 절단" 기술을 사용하여 캡슐화된 개체의 내부를 해부하고 여러 클래스에 영향을 미치는 공용 동작을 재사용 가능한 모듈로 캡슐화하고 이를 Aspect인 "Aspect"라고 명명합니다. 소위 "Aspect"는 단순히 비즈니스와 관련이 없지만 일반적으로 비즈니스 모듈에서 호출되는 논리 또는 책임을 캡슐화하여 시스템에서 코드의 중복을 줄이고 모듈 간의 결합을 줄이는 것을 의미합니다. , 미래의 운용성과 유지 보수성에 도움이 됩니다.

4. 스프링 공통 주석

주요 요점:

(1) 구성 요소 관련:

유틸리티 클래스와 같은 @Component 컴포넌트

@Service는 비즈니스 로직 레이어에서 사용됩니다.

@Repository는 데이터 액세스 계층에서 사용됩니다.

@Controller 컨트롤러 선언

(2) 의존성 주입:

@Autowired: Spring 제공, 타입별 의존성 주입 구현

@Resource: JSR-250 제공

(3) 구성 참고 사항:

@Configuration은 현재 클래스를 구성 클래스로 선언합니다.

@Bean 어노테이션은 메소드에 있으며 현재 메소드의 리턴 값이 <bean/>을 대체하는 Bean임을 선언합니다.

@ComponentScan은 패키지의 스캔 범위를 설정합니다.

(4) AOP 주석:

@Aspect는 관점을 선언합니다(클래스에서).

@포스트 공지 후

@사전조언 전

@주변 알림

@PointCut은 포인트 컷을 선언합니다.

@Scope는 Bean의 범위를 설정합니다.

5. Spring의 디자인 패턴

주요 요점:

    프록시 모드: AOP에서 동적 프록시를 사용하여 aspect 프로그래밍 실현

    싱글톤 모드: 스프링 구성 파일에 정의된 빈은 기본적으로 싱글톤 모드입니다.

    템플릿 메서드 패턴: 코드 중복 문제를 해결하는 데 사용됩니다.

    전면 컨트롤러 모드: Spring은 DispatcherServlet을 제공하여 요청을 분산합니다.

    종속성 주입 모드: BeanFactory / ApplicationContext 인터페이스의 핵심 개념을 통해 실행됩니다.

    Factory 모드: BeanFactory는 객체의 인스턴스를 생성하는 데 사용됩니다.

6. Spring에서 지원하는 여러 bean의 범위

주요 요점:

     singleton: 싱글톤, 기본 범위, SpringIOC 컨테이너에는 인스턴스가 하나만 존재합니다.

     프로토타입: Spring 컨테이너를 통해 프로토타입이 정의한 빈을 얻을 때마다 새로운 Bean 인스턴스가 생성되며 각 Bean 인스턴스는 고유한 속성과 상태를 가집니다.

     요청: Http 요청에서 컨테이너는 Bean의 동일한 인스턴스를 반환합니다. 다른 Http 요청에 대해 새 bean이 생성되며 bean은 현재 Http 요청 내에서만 유효합니다.

     세션: Http 세션에서 컨테이너는 Bean의 동일한 인스턴스를 반환합니다. 다른 세션 요청에 대해 새 인스턴스가 생성되며 이 빈 인스턴스는 현재 세션 내에서만 유효합니다.

      전역 세션: 전역 Http 세션에서 컨테이너는 포틀릿 컨텍스트를 사용할 때만 유효한 Bean의 동일한 인스턴스를 반환합니다.

7. Spring에서 Bean의 생명주기는 무엇인가?

주요 요점:

Bean의 생명주기는 일련의 방법을 거쳤으며 주요 프로세스는 다음과 같습니다.

(1) 일반적으로 new라고 하는 Bean을 인스턴스화합니다.

(2) 초기화: Spring 컨텍스트에 따라 인스턴스화된 Bean, 즉 IOC 주입을 구성합니다. 이 Bean의 Spring 구성에 init-method 속성이 구성되어 있으면 구성된 초기화 메소드가 자동으로 호출됩니다.

(3) 빈 호출: 빈을 가져와서 호출합니다.

(4) Bean 소멸: Bean이 더 이상 필요하지 않을 때 청소 단계를 거치게 되며, Bean이 DisposableBean 인터페이스를 구현하면 그에 의해 구현된 destroy 메소드가 호출됩니다. Bean의 Spring 구성에 destroy-method 속성이 구성되어 있으면 구성된 파괴 방법이 자동으로 호출됩니다.

8. Spring의 트랜잭션 관리

주요 요점:

엔터프라이즈 애플리케이션 프레임워크인 Spring은 다양한 트랜잭션 관리 API 위에 추상화 계층을 정의합니다. 애플리케이션 개발자는 Spring의 트랜잭션 관리 메커니즘을 사용하기 위해 기본 트랜잭션 관리 API를 이해할 필요가 없습니다. Spring은 프로그래밍 방식의 트랜잭션 관리(코딩된 트랜잭션이라고도 함)와 선언적 트랜잭션 관리를 모두 지원합니다.

프로그래밍 방식의 트랜잭션 관리: 트랜잭션의 커밋 및 롤백을 제어하기 위해 트랜잭션 관리 코드를 비즈니스 메서드에 포함합니다.프로그래밍 방식의 트랜잭션에서는 각 비즈니스 작업에 추가 트랜잭션 관리 코드를 포함해야 합니다.

    선언적 트랜잭션 관리: 대부분의 경우 프로그래밍 방식의 트랜잭션 관리보다 사용하는 것이 좋습니다. 비즈니스 메서드에서 트랜잭션 관리 코드를 분리하고 선언적 방식으로 트랜잭션 관리를 구현합니다. 크로스커팅 문제인 트랜잭션 관리는 AOP 접근 방식을 통해 모듈화할 수 있습니다. Spring은 Spring AOP 프레임워크를 통해 선언적 트랜잭션 관리를 지원합니다.

9. Spring에는 여러 가지 의존성 주입 방법이 있습니다.

주요 요점:

(1) 설정 속성 주입

(2) 생성자 주입

(3) 정적 팩토리 메서드 주입

(4) 인스턴스 팩토리 메서드 주입

10. Spring의 설정 방법은 무엇인가

주요 요점:

   Spring은 세 가지 형식으로 xml 구성, 주석 구성 및 JavaConfig 구성을 지원합니다.

(1) xml 구성 기반

<bean id=”dao” class=”com.demo.dao.impl.UserDaoImpl”></bean>

(2) 주석 기반 구성

Bean 연결을 설명하기 위해 XML을 사용하는 대신 관련 클래스, 메소드 또는 필드 선언에 대한 주석을 사용하여 Bean을 구성 요소 클래스 자체로 구성할 수 있습니다. 기본적으로 주석 연결은 Spring 컨테이너에서 켜져 있지 않습니다.

<beans>
    <context:annotation-config/>
</beans>

(3) Java API 기반 구성

Spring의 Java 구성은 @Bean 및 @Configuration을 사용하여 수행됩니다.

@Bean 주석은 <bean /> 요소와 같은 역할을 합니다.

@Configuration은 구성 클래스를 표시하여 xml 구성의 구성 파일을 대체합니다.

추천

출처blog.csdn.net/qq_55917018/article/details/131129242