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