복붙노트

[SPRING] Spring : get 메소드 호출마다 Bean의 새로운 인스턴스를 생성한다.

SPRING

Spring : get 메소드 호출마다 Bean의 새로운 인스턴스를 생성한다.

나는 다음 상황이있다 : 연결 관리자는 ConnectionServer의 한 객체와 DataBean의 새 객체를 매번 가져야합니다. 그래서, 나는이 콩을 만들어 봄 xml을 구성했습니다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <bean id="dataBena" class="com.test.DataBean" scope="prototype"/>
    <bean id="servCon" class="com.test.ServerCon"/>
    <!--<bean id="test" class="com.test.Test"/>-->
     <context:component-scan base-package="com.test"/>
</beans>

DataBean의 범위 프로토 타입 추가

이 후 간단한 Test라는 유틸리티 / 컴포넌트 클래스를 만들었습니다.

@Component
public class Test {

    @Autowired
    private DataBean bean;
    @Autowired
    private ServerCon server;

    public DataBean getBean() {
        return bean.clone();
    }

    public ServerCon getServer() {
        return server;
    }

}

하지만, getBean () 메소드를 호출 할 때마다이 빈을 복제하고 있는데, 이것이 나에게 문제이다. 복제 방법을 사용하지 않고도 스프링 구성에서이 작업을 수행 할 수 있습니까? 감사.

해결법

  1. ==============================

    1.Spring에서 lookup 메소드 기능을 찾고있다. 아이디어는 다음과 같은 추상 메소드를 제공한다는 것입니다.

    Spring에서 lookup 메소드 기능을 찾고있다. 아이디어는 다음과 같은 추상 메소드를 제공한다는 것입니다.

    @Component
    public abstract class Test {
      public abstract DataBean getBean();
    }
    

    그리고 실행시 Spring을 구현해야한다고 Spring에 알려주십시오.

    <bean id="test" class="com.test.Test">
      <lookup-method name="getBean" bean="dataBean"/>
    </bean>
    

    이제 Test.getBean을 호출 할 때마다 Spring에서 생성 된 메소드를 실제로 호출 할 것이다. 이 메소드는 ApplicationContext에 DataBean 인스턴스를 요청합니다. 이 bean이 프로토 타입 범위 인 경우 호출 할 때마다 새 인스턴스가 생성됩니다.

    여기에이 기능에 대해 썼습니다.

  2. from https://stackoverflow.com/questions/7010323/spring-create-new-instance-of-bean-for-each-call-of-get-method by cc-by-sa and MIT license