Лучшая практика введения не бобовых свойств - PullRequest
0 голосов
/ 04 июля 2018

У меня есть объект, который я хотел бы преобразовать в пружинный синглтон, который содержит свойство, которое я хотел бы добавить после его инициализации. Свойство не может быть инициировано как bean-компонент, и я хотел бы получить его из кода.

public class BigObject{
    private SmallObject prop;
}

Я добавил следующий компонент:

<bean id="BigObject" class="com.cisco.cpm.lsd.SessionPublisher"
      scope="singleton" init-method="init"  destroy-method="destroy" lazy-init="true">                
</bean>

Есть ли лучший способ инициализации prop?
Я знаю, что это можно сделать с помощью метода фабрики свойств

<property name="prop">
    <bean factory-bean="SmallObjectFactory" factory-method="getSmallObject"></bean>
</property>

Но для этого нужно добавить новый объект только для инициализации этого свойства. Есть ли лучшее решение?

1 Ответ

0 голосов
/ 04 июля 2018

Если я правильно понимаю ваш вопрос, что-то вроде этого должно работать. Сначала создайте @Configuration, которая представляет ваш боб SmallObject:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class YourConfiguration {
    @Bean
    public SmallObject getSmallObject() {
        // create a new SmallObject
        return new SmallObject();
    }
}

Затем в BigObject, где вы хотите ввести SmallObject, вы можете сделать что-то вроде этого:

import org.springframework.stereotype.Component;
import org.springframework.beans.factory.annotation.Autowired;

@Component
public class BigObject {
    private SmallObject smallObject;

    @Autowired
    public BigObject(SmallObject smallObject) {
        this.smallObject = smallObject;
    }
}

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...