[Spring] (2) Spring 프로젝트를 처음부터 구축하고 사용하기


머리말

우리는 이전 기사에서 Spring이 실제로 많은 도구를 포함하는 IoC 컨테이너라는 것을 알고 있습니다 . 컨테이너이기 때문에 주로 다음 두 가지 작업이 포함됩니다.

  • Spring 컨테이너에 객체를 저장합니다 .
  • 이 용도는 Spring 컨테이너에서 객체를 가져옵니다 .

따라서 Spring 컨테이너를 학습하는 것은 주로 해당 컨테이너의 액세스 작업을 학습하는 것입니다. 다음은 Spring 프로젝트의 생성 및 사용에 대해 자세히 설명한다.

먼저 Spring 프로젝트 생성

다음은 Maven 방식으로 Spring 프로젝트를 생성하는데, Spring 프로젝트 생성 방법은 Servlet과 유사하며 크게 다음 3단계로 나누어진다.

  1. Maven 프로젝트를 생성합니다.
  2. Spring 프레임워크 지원을 추가합니다.
  3. 시작 클래스를 추가합니다.

다음은 이러한 세 단계를 중심으로 Spring 프로젝트를 생성하는 구체적인 프로세스입니다.

1.1 메이븐 프로젝트 생성


생성 후 디렉토리 구조는 다음과 같습니다.

1.2 Spring 프레임워크 지원 추가

  1. Maven Central Warehouse에서 Spring을 검색하고 "Spring Context"를 선택합니다.
  2. 5.xxxx버전 선택

  1. Maven을 선택하고 pom.xml파일 에 복사하여 붙여넣습니다.


최종 pom.xml파일 스타일은 다음과 같습니다.

1.3 시작 클래스 추가

즉, 시작 클래스인 메서드가 Java포함된 클래스를 디렉터리 아래에 만듭니다 .main

2. Bean 객체 저장

콩이란 무엇입니까?

Spring 프레임워크에서 Bean은 Spring 컨테이너에서 관리되고 유지되는 객체로서 매우 중요한 개념이다 . Bean은 POJO(Plain Old Java Object), 엔터티 클래스, 서비스 클래스 등과 같은 모든 Java 객체일 수 있습니다. 이러한 객체는 Spring 컨테이너에서 인스턴스화, 조립, 관리 및 파괴되어 다양한 기능과 서비스를 제공합니다 .

콩을 저장하는 과정은 두 단계로 이루어집니다.

  1. 먼저 Bean 클래스를 작성하십시오.
  2. 그런 다음 생성된 Bean을 Spring 컨테이너에 등록합니다.

2.1 빈 생성

다음은 Student 클래스의 예입니다.

public class Student {
    
    
    
    public Student(){
    
    
        System.out.println("init student");
    }
    
    public void sayHi(){
    
    
        System.out.println("Hi, I am a student.");
    }
}

2.1 Spring 컨테이너에 빈 등록

resourcesSpring 컨테이너에 Bean 객체를 등록하려면 먼저 디렉토리 아래에 일반적으로 다음과 같은 이름의 구성 파일을 생성 해야 합니다 spring-config.xml.

Spring 구성 파일의 고정 내용은 다음과 같습니다.

<?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 http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
</beans>

그런 다음 Spring에 Student 개체를 등록합니다. 즉, <beans>다음 구성을 추가합니다.

여기서 id필드는 Bean에 지정된 이름을 나타내고 class필드는 입니다 包名 + 类名.

3. Bean 객체 가져오기 및 사용

Bean 객체 획득 및 사용은 대략 다음 세 단계로 나눌 수 있습니다.

  1. Spring 컨텍스트 객체를 얻으십시오. 객체는 모두 Spring에 의해 관리되므로 Spring에서 Bean을 얻으려면 먼저 Spring을 얻어야 합니다.
  2. 반환된 Spring 컨텍스트 객체를 통해 지정된 Bean 객체를 얻습니다.
  3. Bean 객체를 사용하십시오.

3.1 스프링 컨텍스트 얻기

Spring 컨텍스트 객체를 얻는 두 가지 주요 방법, 즉 사용하는 방법 ApplicationContextBeanFactory얻는 방법이 있습니다.

1. ApplicationContext사용해 보세요

    public static void main(String[] args) {
    
    
        ApplicationContext context =
                new ClassPathXmlApplicationContext("spring-config.xml");
    }

2. BeanFactory사용하기

    public static void main(String[] args) {
    
    
        BeanFactory beanFactory =
                new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
    }

3.2 ApplicationContext와 BeanFactory의 차이점

이 시점에서 각각 Spring 컨텍스트 객체 메소드를 실행 ApplicationContext하고 가져옵니다 .BeanFactorymain

ApplicationContext


이때 ApplicationContextSpring 컨텍스트를 얻기 위해 를 사용하면 Spring 컨테이너에 있는 Bean 객체가 즉시 초기화되는 것을 알 수 있다.

BeanFactory


Spring 컨텍스트를 얻기 위해 사용하는 경우 BeanFactorySpring의 Bean 객체는 즉시 초기화되지 않고 Bean 객체를 획득하면 초기화되는 지연 로딩 모드입니다.

ApplicationContextBeanFactory의 차이점은 다음과 같이 요약할 수 있습니다.

상속 관계 및 기능 수준:

  • ApplicationContext인터페이스는 컨테이너에 액세스하는 기본 기능을 제공하는 BeanFactory인터페이스를 상속하며 상속된 모든 기능 외에도 국제화 지원 추가, 리소스 액세스 지원, 이벤트 전파 등과 같은 고유한 기능도 갖습니다.BeanFactoryApplicationContextBeanFactory

성능 측면에서:

  • ApplicationContext모든 Bean 객체를 한 번에 로드하고 초기화하지만 BeanFactoryBean 객체가 필요할 때만 로드되므로 더 가볍습니다.
  • 따라서 높은 성능 요구 사항과 충분한 메모리가 있는 시나리오에서 사용하는 것이 좋습니다 ApplicationContext. 작은 메모리 공간과 낮은 성능 요구 사항이 있는 시나리오에서 사용하는 것이 좋습니다 BeanFactory.

3.3 지정된 Bean 객체를 가져옵니다.

  1. Bean 객체의 이름을 통해 직접 획득
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
Student student = (Student) context.getBean("student");

getBean해당 메소드는 ObjectBean 객체의 이름을 통해 직접 객체를 반환하므로 타입 변환이 필요합니다.

  1. 콩 종류별로 획득
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
Student student = context.getBean(Student.class);

getBean메소드는 Bean 객체의 유형을 통해 얻어지며 현재 필수 유형 변환은 필요하지 않지만 이 메소드에는 문제가 있습니다. Spring 컨테이너에 동일한 유형의 Bean 객체가 여러 개 있으면 모호함, 즉 반환된 which object 입니다 .

예를 들어 Spring 컨테이너에 Student 개체를 추가합니다.

이때 main기능이 시작되면 다음과 같은 문제가 발생합니다.


이때 Spring 컨테이너에는 같은 타입의 Bean 객체가 2개 있는데, 타입별로 가져오면 어떤 것을 가져와야 할지 알 수 없습니다. 따라서 이 문제를 해결하는 데 사용할 수 있습니다 通过 Bean 名称 + 类型获取.

  1. Bean 이름 + 유형으로 가져오기
    public static void main(String[] args) {
    
    
        ApplicationContext context =
                new ClassPathXmlApplicationContext("spring-config.xml");

        Student student = context.getBean("student", Student.class);
        Student student2 = context.getBean("student2", Student.class);
        
        student.sayHi();
        student2.sayHi();
    }

이때 Bean 이름 + 유형을 얻는 방법을 통해 Spring 컨테이너에 동일한 유형의 Bean 객체가 여러 개 있더라도 이름이 다르기 때문에 지정된 Bean 객체를 올바르게 얻을 수 있습니다.

4. 요약

이상에서는 Spring 프로젝트의 생성 및 사용 과정을 자세하게 설명하였고, 다음은 전체 과정을 요약하였다.

  1. Maven 프로젝트를 통해 Spring 프로젝트를 생성하고 Spring 프레임워크에 대한 지원도 추가합니다.
  2. Bean 객체를 생성하고 spring-config.xml구성 파일을 통해 Spring 컨테이너에 저장합니다.
  3. Bean 객체를 가져옵니다.
    • ApplicationContext먼저 또는 를 통해 구성 파일을 가져옵니다 BeanFactory. 즉, Spring 컨텍스트 개체를 가져옵니다.
    • getBean메소드를 통해 Bean 객체를 가져옵니다.
    • Bean 객체를 사용하십시오.

추천

출처blog.csdn.net/qq_61635026/article/details/132080942