programing

도대체 봄콩이란 무엇일까요?

prostudy 2022. 6. 26. 09:43
반응형

도대체 봄콩이란 무엇일까요?

아직 봄콩의 대략적인 정의를 알 수 없습니다.Grails 문서나 책에서 자주 언급되지만, 그것이 무엇인지 이해하는 것이 유익하다고 생각합니다.그렇다면 봄콩은 무엇일까요?어떻게 사용할 수 있습니까?의존성 주입과 관련이 있습니까?

스프링 코어 테크놀로지 레퍼런스 문서에는 콩이 기재되어 있습니다.

봄 IoC 컨테이너 및개요 섹션(여기서 "IoC"는 "컨트롤의 반전"을 의미합니다)에 따라:

봄에는 애플리케이션의 백본을 구성하고 Spring IOC 컨테이너에 의해 관리되는 개체를 bean이라고 합니다.빈은 Spring IOC 컨테이너에 의해 인스턴스화, 조립 및 관리되는 객체입니다.그렇지 않으면 응용 프로그램에서 빈은 여러 개체 중 하나에 불과합니다.콩과 그 의존성은 컨테이너가 사용하는 구성 메타데이터에 반영됩니다.

콩과 스코프에 대해서는, 「 스코프」섹션을 참조해 주세요.

콩 정의를 작성할 때는 해당 콩 정의에 의해 정의된 클래스의 실제 인스턴스를 만들기 위한 레시피를 만듭니다.콩 정의가 레시피라는 개념은 중요합니다.클래스와 마찬가지로 하나의 레시피에서 많은 오브젝트 인스턴스를 만들 수 있기 때문입니다.

특정 bean 정의에서 작성된 객체에 삽입되는 다양한 의존관계 및 설정값을 제어할 수 있을 뿐만 아니라 특정 bean 정의에서 작성된 객체의 범위도 제어할 수 있습니다.이 접근방식은 강력하고 유연합니다.Java 클래스레벨에서 오브젝트의 범위에서 베이킹할 필요 없이 Configuration을 통해 작성하는 오브젝트의 범위를 선택할 수 있기 때문입니다.빈은 다수의 스코프 중 하나에 배치되도록 정의할 수 있습니다.

스프링 콩은 스프링 컨테이너에 의해 관리되는 단순한 인스턴스 객체입니다. 즉, 스프링 콩은 프레임워크에 의해 생성되고 배선되어 나중에 그것들을 얻을 수 있는 "오브젝트 봉지"(용기)에 들어갑니다.

여기서 말하는 "배선" 부분은 의존성 주입의 모든 것입니다. 즉, "I will need this thing"이라고 말하면 프레임워크는 적절한 인스턴스를 얻기 위해 몇 가지 규칙을 따릅니다.

Spring에 익숙하지 않은 사람을 위해 위키피디아 Spring의 글은 다음과 같은 좋은 설명을 가지고 있다고 생각한다.

Spring Framework의 중심은 제어 컨테이너의 반전입니다.이것에 의해, 리플렉션을 사용해 Java 오브젝트를 설정 및 관리할 수 있는 일관된 수단이 제공됩니다.컨테이너는 특정 개체의 개체 수명 주기 관리(이러한 개체 생성, 초기화 메서드 호출 및 이들 개체를 배선하여 구성)를 담당합니다.

컨테이너에 의해 생성된 개체를 관리 개체 또는 콩이라고도 합니다.컨테이너는 XML 파일을 로드하거나 구성 클래스에서 특정 Java 주석을 감지하여 구성할 수 있습니다.이러한 데이터 소스에는 콩을 만드는 데 필요한 정보를 제공하는 콩 정의가 포함되어 있습니다.

개체는 종속성 조회 또는 종속성 주입을 통해 가져올 수 있습니다.의존관계 룩업은 발신자가 컨테이너 오브젝트에 특정 이름 또는 특정 유형의 오브젝트를 요구하는 패턴입니다.종속성 주입은 컨테이너가 생성자, 속성 또는 공장 메서드를 통해 이름으로 개체를 다른 개체로 전달하는 패턴입니다.

먼저 봄을 이해합시다.

스프링은 가볍고 유연한 틀입니다.

유추:
여기에 이미지 설명 입력

자바 Bean은 여러 개체를 단일 개체(빈)로 캡슐화하는 클래스입니다."Bean"이라는 이름은 Java용 재사용 가능한 소프트웨어 구성 요소를 만드는 것을 목표로 하는 이 표준을 포함하기 위해 붙여졌습니다.

스프링빈: 스프링 컨테이너에서 생성, 관리 및 파괴되는 객체입니다.컨트롤 반전이라고 하는 메타데이터(xml 또는 주석)를 통해 스프링 컨테이너에 개체를 주입할 수 있습니다.

유추:농부가 씨앗으로 경작하는 농지를 가지고 있다고 가정해 보자.여기서 농부는 봄의 틀, 농지는 봄의 용기, 콩은 봄의 콩, 재배는 봄의 가공업자입니다.

여기에 이미지 설명 입력

콩의 라이프 사이클처럼 봄콩도 독자적인 라이프 사이클이 있습니다.

여기에 이미지 설명 입력

여기에 이미지 설명 입력

img 소스

다음은 봄의 콩 라이프 사이클 순서입니다.

  • 인스턴스화:먼저 스프링 컨테이너는 XML 파일에서 빈의 정의를 찾아 빈을 인스턴스화합니다.

  • 속성 채우기:종속성 주입을 사용하면 spring은 bean 정의에 지정된 대로 모든 속성을 채웁니다.

  • [ Bean Name : imp imp : [ implements ](빈이 실장되어 있는 경우)BeanNameAware를 터터 、 프 interface 、 를를를를ID로 합니다.setBeanName()★★★★★★ 。

  • factory : Bean이 Set Bean : 을 구현한 경우BeanFactoryAware은 콩팩토리를 '', '콩팩토리'로 통과합니다.setBeanFactory()★★★★★★ 。

  • .을 사용하다 Processor가 Bean과 되어 있는 은 Bean Post Processor를 Bean이라고 .postProcesserBeforeInitialization()★★★★★★ 。

  • bean 구현되어 있는 경우IntializingBean,그것들.afterPropertySet()메서드가 호출됩니다.빈에 init 메서드 선언이 있는 경우 지정된 초기화 메서드가 호출됩니다.

  • [ ]가 경우 :– [ ]BeanPostProcessors된, 그 콩과 관련된, 콩과 관련된, 콩과 관련된, 콩과 관련된, 콩과 콩의postProcessAfterInitialization()메서드가 호출됩니다.

  • 즉시 사용 가능:이것으로 어플리케이션에서 콩을 사용할 수 있게 되었습니다.

  • 실장되어 있는 경우DisposableBean.destroy()

어느 정도 이해하셨네요.필요에 따라 콩을 커스터마이즈하고 필요에 따라 스프링 용기에 IOC(Inversion of Control)라고 널리 알려진 방법론, 즉 의존성 주입(DI)을 사용하여 콩을 관리하도록 통지해야 합니다.

당신은 콩에 대한 의존도를 평가하거나 인스턴스화를 신경 쓸 필요가 없도록 콩을 철사로 연결한다.이것은 헐리우드 원칙이라고 널리 알려져 있다.

구글은 이 질문의 링크로 가득 찬 링크에 더하여 이에 대해 자세히 알아볼 수 있는 최고의 도구입니다.:)

Bean은 스프링 컨테이너에 의해 관리되는 POJO(Plain Old Java Object)입니다.

스프링 컨테이너는 기본적으로 콩 인스턴스를 하나만 만듭니다.이 빈은 메모리에 캐시되므로 빈에 대한 모든 요청은 동일한 빈으로 공유 참조를 반환합니다.

@Bean 주석은 애플리케이션 컨텍스트에서 스프링이 빈으로 등록된 개체를 반환합니다.메서드 내부의 로직이 인스턴스 작성을 담당합니다.

언제 @Bean 주석을 사용합니까?

자동 설정이 불가능한 경우.예를 들어 서드파티 라이브러리에서 컴포넌트를 배선하는 경우 소스 코드를 사용할 수 없기 때문에 @Component를 사용하여 클래스에 주석을 달 수 없습니다.

실시간 시나리오는 누군가가 Amazon S3 버킷에 연결하려고 할 수 있습니다.소스를 사용할 수 없기 때문에 @bean을 작성해야 합니다.

@Bean
public AmazonS3 awsS3Client() {
    BasicAWSCredentials awsCreds = new BasicAWSCredentials(awsKeyId, accessKey);
    return AmazonS3ClientBuilder.standard().withRegion(Regions.fromName(region))
            .withCredentials(new AWSStaticCredentialsProvider(awsCreds)).build();
}

위의 코드 소스 -> https://www.devglan.com/spring-mvc/aws-s3-java

위에서 @Component Annotation을 언급했기 때문입니다.

@Component 주석이 달린 클래스가 "컴포넌트"임을 나타냅니다.이러한 클래스는 주석 기반 구성 및 클래스 경로 스캔을 사용할 때 자동 검출 후보로 간주됩니다.

구성 요소 주석이 클래스를 단일 빈으로 등록합니다.

스프링에는 Bag of Bean을 운반하는 IoC 컨테이너가 있습니다. 생성 및 삭제는 스프링 컨테이너의 책임입니다.우리는 배선과 자동 배선을 통해 스프링에 콩을 넣을 수 있습니다.배선은 XML 파일에 수동으로 구성하고 "자동 배선"은 Java 파일에 주석을 넣은 다음 Spring이 Java 구성 파일이 있는 루트 컨텍스트를 자동으로 스캔하여 만들고 Spring의 가방에 넣는 것을 의미합니다.

다음은 Bean에 대한 자세한 정보를 얻은 URI입니다.

  • 스프링 콩은 스프링 IOC 컨테이너에 의해 관리되는 객체 인스턴스입니다.

  • 봄 IOC 컨테이너에는 콩 봉지가 실려 있습니다.콩의 생성, 유지 및 삭제는 스프링 컨테이너의 책임입니다.

  • 우리는 배선과 자동 배선을 통해 스프링에 콩을 넣을 수 있습니다.

  • 배선이란 XML 파일에 수동으로 설정하는 것을 의미합니다.

  • 자동 배선이란 Java 파일에 주석을 넣고 Spring은 Java 구성 파일이 있는 루트 컨텍스트를 자동으로 스캔하여 만들고 Spring의 가방에 넣는 것을 의미합니다.

봄콩은 클래스입니다.하지 않고를 사용하여)new가 로 표시됩니다.bean응용 프로그램콘텍스트에서 클래스 타입으로 캐스트합니다.여기서 bean은 응용 프로그램콘텍스트 설정에서 설정한 것입니다.이렇게 하면 어플리케이션 전체가 싱글톤 스코프 인스턴스를 어플리케이션 전체에서 유지합니다.모든 콩은 애플리케이션 컨텍스트 인스턴스화 직후 설정 순서에 따라 초기화됩니다.응용 프로그램에 빈이 없는 경우에도 응용 프로그램 컨텍스트를 생성한 직후에 모든 빈 인스턴스가 이미 생성됩니다.

Spring 부팅 어플리케이션에서 bean은 어플리케이션이 시작될 때 Spring 프레임워크에 의해 생성되는 Java 객체입니다.

오브젝트의 목적은 구성, 서비스, 데이터베이스 연결 팩토리 등 거의 모든 것이 될 수 있습니다.- 스프링은 별로 중요하지 않습니다.

대부분의 콩은 다른 콩에 의존하여 작동합니다.예를 들어 엔티티 관리자는 데이터베이스 연결이 필요할 수 있습니다.스프링 프레임워크는 콩이 어떻게 자동으로 철사로 연결되어야 하는지 알아낼 수 있습니다.애플리케이션 개발자의 입장에서는 필요한 콩을 선언하기만 하면 해당 콩은 사용 가능한 상태로 애플리케이션에 "마법적으로" 표시됩니다.

Spring의 XML 구성은 Bean으로 구성되어 있으며 기본적으로 Bean은 클래스입니다.이는 Application Context 내에서 사용하는 POJO일 뿐입니다.new 키워드를 대체하는 것으로 간주할 수 있습니다.따라서 애플리케이션에서 new 키워드를 사용하는 경우 다음과 같이 됩니다.

MyRepository myRepository =new MyRepository ();

키워드 new를 사용하고 있는 경우 해당 설정을 삭제하고 XML 파일에 저장할 수 있습니다.이렇게 코드화합니다.

<bean name="myRepository " 
      class="com.demo.repository.MyRepository " />

이제 간단하게 Setter Injection/Constructor Injection을 사용할 수 있습니다.세터 주입을 쓰고 있어요.

public class MyServiceImpl implements MyService {
    private MyRepository myRepository;
    public void setMyRepository(MyRepository myRepository)
        {
    this.myRepository = myRepository ;
        }
public List<Customer> findAll() {
        return myRepository.findAll();
    }
}

봄에는 애플리케이션의 백본을 구성하고 Spring IOC 컨테이너에 의해 관리되는 개체를 빈이라고 합니다.콩은 단순히 스프링 IOC 컨테이너에 의해 인스턴스화, 조립 및 관리되는 객체입니다.

봄에는 모든 물건이 콩입니다!스프링 프레임워크의 기본 단계는 객체를 콩으로 정의하는 것입니다.빈은 클래스 정의를 참조하여 스프링 프레임워크에 의해 생성되는 객체 인스턴스일 뿐입니다.이러한 정의는 기본적으로 구성 메타데이터를 구성합니다.그런 다음 프레임워크는 이 구성 메타데이터를 기반으로 인스턴스화해야 하는 개체, 설정 및 주입해야 하는 종속성, 새로 생성된 인스턴스의 범위 등에 대한 계획을 작성합니다.

메타데이터는 첫 번째 장과 같이 단순한 XML 파일로 제공할 수 있습니다.또는 메타데이터를 주석 또는 Java Configuration으로 제공할 수 있습니다.

: 저스트 스프링

언급URL : https://stackoverflow.com/questions/17193365/what-in-the-world-are-spring-beans

반응형