Весенние примеры бобов
В среде 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]]