Spring内部のBeanの例

Spring inner Beanの例

Springフレームワークでは、Beanが1つの特定のプロパティのみに使用される場合は常に、内部Beanとして宣言することをお勧めします。 また、内部Beanは、セッターインジェクション ‘property‘とコンストラクターインジェクション ‘constructor-arg‘の両方でサポートされています。

Spring内部Beanの使用方法を示す詳細な例を参照してください。

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‘属性を使用して、「Person」Beanを「Customer」Bean、personプロパティに次のように参照できます。



    
        
    

    
        
        
        
    

一般に、このように参照することは問題ありませんが、「example」のperson BeanはCustomerBeanにのみ使用されるため、次のようにこの「example」のpersonを内部Beanとして宣言することをお勧めします。



    
        
            
                
                
                
            
        
    

この内部Beanは、次のようにコンストラクター注入でもサポートされます。



    
        
            
                
                
                
            
        
    

Note
BeanクラスのIDまたは名前の値は内部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]]