2016-08-13 3 views
1

Я хочу создать объект с использованием нескольких свойств, как я могу достичь этого с помощью Spring @Autowired? E.g.-Spring autowired using constructor

public class Person{ 
private String fname; 
private String lname; 
public Person(String fname, String lname){ 
    this.fname = fname; 
    this.lname = lname; 
} 

}

Как я могу создать объект, используя @Autowired класса Person, передавая эти свойства во время выполнения.

Атула

ответ

3

Вы действительно хотите autowire переменные? Или вы хотите четко определить их при получении компонента?

В последнем случае, вы можете просто позвонить ApplicationContext.getBean(Class<T> clz, Object ... arguments), в вашем случае ...

Person person = context.getBean(Person.class, "Henry", "Miller"); 

Очевидно, что не имеет ничего общего с @Autowired. Или вы хотите автоувеличивать некоторые строки? В этом случае вы обычно используете аннотацию @Value. Autowired используется для введения бобы, которые вы можете сделать с помощью инъекции поля ...

@Autowired 
private MyService service; 

... с помощью инъекции конструктора ...

@Autowired 
public Person(MyService service) { ... } 

... через сеттер инъекции .. .

@Autowired 
public void setMyService(MyService service) {..} 

но обычно только autowire бобы этак. Струны нет бобов, так что вы должны использовать @Value ...

@Autowired 
public Person(@Value('${app.some.property}') final String firstName) {...} 

Это впрыснуть настроенное свойство app.some.property в этом компоненте. Конечно, это только хорошо, если вы действительно хотите что-то привнести из контекста приложения. Если вы хотите динамически создать Person, вы можете использовать метод выше.

+0

Простыми словами, я хочу создать объект класса person с 2 строковыми свойствами, когда это требуется. В java мы можем сделать это с помощью новых, но хотим, чтобы не использовать способ создания с использованием Spring. @Autowired работает хорошо без конструктора аргументов, но как он работает с конструктором с аргументами. – Atul

+0

Обновлен ответ. –