Примеры Spring Bean

Весенние примеры бобов

В среде Spring, когда бин используется только для одного конкретного свойства, рекомендуется объявить его как внутренний бин. И внутренний компонент поддерживается как при внедрении установщика «property», так и при внедрении конструктора «constructor-arg».

Смотрите подробный пример, чтобы продемонстрировать использование внутреннего компонента Spring.

package com.example.common;

public class Customer
{
    private Person person;

    public Customer(Person person) {
        this.person = person;
    }

    public void setPerson(Person person) {
        this.person = person;
    }

    @Override
    public String toString() {
        return "Customer [person=" + person + "]";
    }
}
package com.example.common;

public class Person
{
    private String name;
    private String address;
    private int age;

    //getter and setter methods

    @Override
    public String toString() {
        return "Person [address=" + address + ",
                               age=" + age + ", name=" + name + "]";
    }
}

Часто вы можете использовать атрибут «ref» для ссылки на bean-компонент «Person» в bean-компонент «Customer», свойство person следующим образом:



    
        
    

    
        
        
        
    

В общем, это нормально, но поскольку bean-объект "example" используется только для компонента Customer, лучше объявить это "example" person как внутренний bean-компонент следующим образом:



    
        
            
                
                
                
            
        
    

Этот внутренний компонент также поддерживается в инжекторе конструктора следующим образом:



    
        
            
                
                
                
            
        
    

Note
Значение идентификатора или имени в классе bean-компонента не обязательно во внутреннем компоненте, оно просто игнорируется контейнером Spring.

Запустить его

package com.example.common;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App
{
    public static void main( String[] args )
    {
        ApplicationContext context =
          new ClassPathXmlApplicationContext(new String[] {"Spring-Customer.xml"});

        Customer cust = (Customer)context.getBean("CustomerBean");
        System.out.println(cust);

    }
}

Выход

Customer [person=Person [address=address1, age=28, name=example]]