2015-08-10 3 views
0

Я учусь весной, и я запуталась в инициализации, разрушающие метод и конструктор частьSpring методы инициализации

Это spring-config.xml

<bean id="msgBean" class="com.example1.MessagesBean" init-method="start"> 

    </bean> 

    <bean name="carBean" class="com.example2.Car" init-method="initEngine"> 
     <constructor-arg ref="engineBean" /> 
    </bean> 

    <bean id="engineBean" class="com.example2.Engine" /> 

Это Car.java

public class Car { 

    private Engine engine; 

    public Car(Engine engine){ 
     System.out.println("Inside Car constructor"); 
     this.engine = engine; 
    } 

    public void startCarEngine(){ 
     engine.startEngine(); 
    } 

    private void initEngine(){ 
     System.out.println("heating up engine"); 
    } 
} 

Это Engine.java

public class Engine { 

    public Engine(){ 
     System.out.println("Inside Engine constructor"); 
    } 

    public void startEngine(){ 
     System.out.println("Engine is starting..."); 
    } 
} 

Это MessageBean.java

public class MessagesBean { 

    private static final String HELLO_WORLD = "Hello World"; 

    public MessagesBean(){ 
     System.out.println("Printing " + HELLO_WORLD); 
    } 


    public void start(){ 
     System.out.println("Step 2.Bean is starting"); 
    } 

} 

Это мой Main class

AbstractApplicationContext abstractAppContext = new ClassPathXmlApplicationContext("spring-config.xml"); 
    MessagesBean msgBean2 = abstractAppContext.getBean("msgBean", MessagesBean.class); 

Это мой output

Printing Hello World 
    Step 2.Bean is starting 
    Inside Engine constructor 
    Inside Car constructor 
    heating up engine 

Мой вопрос я назвал только MessageBean в моем главном классе, и это, как предполагается, звоните только MessageBean Constructor и init, но почему вызваны два других компонента beans и метод init, или я сделал что-то неправильно? Что делать, если у меня есть разные методы init, destroy для разных bean-компонентов, и я хочу только инициализировать/вызывать конкретные конструкторы bean (-ов) и методы init?

+1

Если пометить его для ленивой инициализации, он будет создавать бобы лениво. По умолчанию он нетерпелив. – Atul

+1

read thishttp: //docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html – yeppe

ответ

2

по умолчанию пружинной фасоли получает жадность инициализируется, если вы хотите, чтобы инициализировать лениво добавить это свойство в определении боба

lazy-init="true" 
+0

спасибо .. он работает сейчас !!!!! : D – Raymond

+0

Добро пожаловать –

Смежные вопросы