2017-11-06 1 views
1

필자가 작성한 프로그램에서 이상한 행동을하고 콩이 전달되는 방식이 궁금합니다.다른 객체에 전달 된 스프링 싱글 톤

<bean id="Factory" class="com.xxx.xxx.Factory"> 
    <constructor-arg name="generator" ref="Generator"/> 
</bean> 

<bean id="Generator" class="com.xxx.xxx.Generator"> 
    <constructor-arg name="min" value="0"/> 
    <constructor-arg name="max" value="5"/> 
</bean> 

class Generator { 

    public Generator (min, max) {} 

    public Integer getNextValue() { 

     return nextValueInSequence; // min > max cyclically 

    } 

} 


class Factory{ 

    public Factory (Generator generator) { 

     ArrayList<Object> objects = new ArrayList<>(); 

     for (0 ... 4) { 
      Object obj = new Object(generator); 
      objects.add(obj); 
     } 

    } 

} 

내 질문은 objects 목록 같은 Generator 객체를 포함해야한다 : 여기

코드 (의사 ... 틱)인가? 예를 들어

:

objects.get(0).getNextValue()objects.get(1).getNextValue()에 영향을 미칩니 까?

objects.get(0).getNextValue() > 2 
objects.get(1).getNextValue() > 3 
objects.get(0).getNextValue() > 4 

내가 배열에서 다른 개체를보고 있어요.

+0

개체 클래스에는 이러한 종류의 생성자가 있습니까? –

답변

0

예, arraylist의 각 객체에있는 생성기는 동일해야합니다. 왜냐하면 스프링 빈은 기본적으로 싱글 톤이기 때문입니다.

arraylist에서 발전기 개체에 대한 == 비교를 수행 했습니까? 모두가 같은 대상이기 때문에 사실이어야합니다. 그리고 네,

objects.get (0) .getNextValue() objects.get (1) .getNextValue()

getNextValue() 구현이 완료 제공에 영향을? 동일한 객체에 대해 논리적으로 getNextValue()을 호출하면 항상 다른 값이 반환됩니다.

관련 문제