Spring Fundamentals - 반전 제어

스프링은 소스 자바 응용 프로그램 개발 프레임워크로 모든 종류의 자바 응용 프로그램을 지원한다. 예를 들어 기업 응용 프로그램, 웹 응용 프로그램, 클라우드 기반 응용 프로그램 등이다.Spring 어플리케이션은 테스트가 쉽고 재사용 가능하며 유지 관리가 용이합니다.
용수철 모듈은 느슨하게 결합된 것이다.개발자는 필요에 따라 모듈을 선택하여 응용 프로그램을 구축할 수 있다.
이 게시물의 데모:
  • demo without IoC
  • demo with IoC

  • Spring 프레임워크 소개
    먼저 Spring 프레임워크의 기능과 모듈을 간략하게 소개하겠습니다.
    특징.
    묘사
    라이트급
    용수철 탱크가 매우 작다.기본 Spring 응용 프로그램은 10MB보다 작습니다.내장형 Tomcat 서버와 함께 배포할 수 있으며 중형 어플리케이션 서버가 필요하지 않습니다.
    비침입성
    Spring 응용 프로그램은 POJO를 사용하여 개발되었습니다.미리 정의된 클래스를 확장하거나 실현할 필요가 없습니다.
    느슨한 결합
    Spring은 종속 주입 및 면방향 프로그래밍을 사용하여 느슨한 결합을 촉진하는 코드를 사용합니다.
    반전 제어(IoC)
    IoC는 어플리케이션 객체의 라이프 사이클과 종속성을 책임집니다.
    용수철 용기
    Spring 컨테이너는 객체의 종속성 작성, 초기화 및 관리를 담당합니다.
    AOP(Anginuity Program)
    로그, 사무, 보안 등 지원 기능 (주목점) 과 응용 프로그램 핵심 업무 논리의 분리를 추진합니다.
    봄 5 일.x에는 다음과 같은 주요 모듈 그룹이 있습니다.
  • 핵심 컨테이너: Spring 프레임워크의 핵심 기능을 제공하는 핵심 모듈입니다.
  • 데이터 액세스/통합: 이 모듈은 JDBC 및 ORM 데이터 액세스
  • 를 지원합니다.
  • 웹: 이러한 모듈은 웹 응용 프로그램을 지원합니다.
  • 기타: Spring은 Spring 응용 프로그램을 테스트하는 데 사용되는 Test와 같은 추가 모듈을 제공합니다.


  • 스프링 제어 반전
    일반적으로 개발자는 new 조작부호를 사용하여 의존적인 응용 프로그램 대상을 만들 책임이 있다.따라서 응용 프로그램 의존 관계의 모든 변경 사항은 코드를 변경해야 한다.응용 프로그램이 점점 커지면서 긴밀한 결합과 복잡함을 초래할 것이다.
    제어 반전 (IoC) 은 더 느슨한 결합 프로그램을 만듭니다.IoC는 응용 프로그램 대상의 창설, 초기화, 삭제의 책임을 응용 프로그램에서 프레임워크의 제3자로 옮긴다.제3자는 응용 프로그램의 대상 관리와 의존 관계를 책임질 것이다.이것은 응용 프로그램을 유지보수, 테스트, 재사용하기 쉽게 한다.Spring 프레임워크는 IoC 구현을 위해 종속 주입(DI)을 사용합니다.
    Spring이 관리하는 객체를 bean이라고 합니다.Spring 덕분에 직접 객체를 만들 필요가 없습니다.의존 주입은 설정을 통해 대상을 만드는 방법을 설명할 수 있습니다.
    DI는 다음과 같은 소프트웨어 설계 모델입니다.
  • 는 느슨한 결합된 응용 프로그램 체계 구조를 만들고 중용성과 테스트가 용이하도록 추진한다.
  • 코드와 설정을 분리하여 책임을 분리한다.설정을 사용하면 코드를 변경하지 않고 의존 항목을 쉽게 수정할 수 있습니다.
  • 실제 대상을 아날로그 대상으로 교체하여 테스트할 수 있습니다.이렇게 하면 아날로그 객체를 사용한 간단한 JUnit 테스트를 작성하여 테스트 가능성을 높일 수 있습니다.
  • 앞에서 말한 바와 같이 Spring 프레임워크의 핵심 용기 모듈은 의존 주입을 사용하여 IoC를 제공한다.Spring 컨테이너는 구성 메타데이터라는 응용 프로그램에서 제공하는 추가 정보를 통해 작성할 객체와 작성 시기를 알 수 있습니다.

    Spring은 BeanFactory와 ApplicationContext(인터페이스) 두 가지 종류의 컨테이너를 제공합니다.ApplicationContext는 BeanFactory에서 상속된 개발의 첫 번째 컨테이너입니다.ApplicationContext는 국제화, 검증 등 기업 서비스를 지원하는 추가 기능을 제공합니다.
    // org.springframework.context.support.ClassPathXmlApplicationContext
    // is the most common implementation of ApplicationContext
    ApplicationContext context = new ClassPathXmlApplicationContext("config.xml");
    Object obj = context.getBean("exampleService");
    
    콩 공장
    응용 프로그램 컨텍스트
    주석 기반 DI 지원이 없습니다.
    주석 기반 DI 지원
    엔터프라이즈 서비스 지원이 없습니다.
    기업 서비스 지원: 검증, 국제화 등.
    기본적으로 지연 로드 지원
    기본적으로 즉시 불러오는 것을 지원합니다.비안은 불러오는 동안 실례화됩니다.
    Spring을 사용하면 다양한 방법으로 메타데이터를 POJO에 구성할 수 있습니다.
  • XML 구성
  • 주석 기반 구성
  • Java 기반 구성

  • 결론
    마지막으로 XML 구성을 기반으로 한 소형 IoC 예제를 소개하겠습니다.
    package com.maxdemaio.service;
    
    public class BlogPostService {
     public void display() {
            System.out.println("Hi, Welcome to the Blog Post Generation application");
        }
    }
    
    <!-- Example object in a config.xml file -->
    <!--
    1. <beans> is the root element & also includes namespace declarations
    
    2. Bean definition
    
    3. id attribute represents a unique bean identifier
    
    4. class attribute represents a fully qualified class name
    -->
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <bean id="blogPostService" class="com.maxdemaio.service.BlogPostService" />
    
    </beans>
    
    package com.maxdemaio.client;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import com.maxdemaio.service.BlogPostService;
    
    public class Client {
    
     public static void main(String[] args) {
    
     // ApplicationContext container is instantiated by loading the configuration
     // from config.xml available in application classpath
     ApplicationContext context = new ClassPathXmlApplicationContext("config.xml");
    
     // Access bean with id “blogPostService"
     // Typecast from Object type to blogPostService type
     BlogPostService blogPostService = (BlogPostService) context.getBean("blogPostService");
     // Invoke display method of blogPostService to display greeting on console
            blogPostService.display();
        }
    
    }
    
    우리는 new 키워드를 사용하지 않고, 대신 위탁 관리 Springbean을 설정했다.이것은 우리가 느슨하게 결합된 코드를 가지도록 허락한다.

    인용된 작품
  • https://docs.spring.io/spring-framework/docs/5.0.0.RC2/spring-framework-reference/overview.html
  • 좋은 웹페이지 즐겨찾기