2015-07-23 2 views
0

Пытался найти ответ - не повезло, поэтому выставляю вопрос.ApplicationContext получить аннотированную фасоль по имени

У меня есть

@ConfigurationProperties 
class XYZConfig { 
    int f1.... 
} 

Я пытаюсь позже, чтобы получить этот компонент по имени в моем приложении, но только одно имя доступны является полностью квалифицированным один. Я пытался использовать @Component(value="xyzconfig") не повезло

Интересно, есть ли способ установить короткое имя для bean-компонента, не перейдя в xml и не указывая его явно?

ответ

0

Я не совсем понимаю, что вы пытаетесь, но если вы класс XYZConfig должен быть классом конфигурации, и будут созданы bean-компоненты, чем вам нужно аннотировать этот класс с помощью @Configuration. Также в вашем текстовом файле .xml вам нужно добавить <annotation-driven/> и установить <context:component-scan base-package="your.package.wit.classes.for.scanning"></context:component-scan>.

Но, если этот класс действительно должен быть Bean затем создать простой класс Java (то есть: BeanClass), а затем в конфигурации создать метод, как это:

@Bean 
public BeanClass beanClassName(){ 
BeanClass bc = new BeanClass() 
... 
return bc; 

Позже этот компонент будет виден с идентификатором/имя beanClassName

+0

XYZConfig - это безопасная для типа конфигурации для application.properties. Я не объявлял его как bean в config.xml, но я использую его позже как класс @EnableConfigurationProperties (XYZConfig.class) XYZ {....} 'Так что это не конфигурация с точки зрения Spring, я думаю. Я нашел обходной путь получения bean для XYZ и достижения XYZConfig из него (XYZ имеет член типа XYZConfig) –

+0

Я не знал об этом способе, чтобы включать значения свойств раньше, я сделал это через .xml-конфигурацию. Вам действительно нужно найти этот бобов по имени. @Autowired должен помочь. Посмотрите на эту ссылку: https://spring.io/blog/2013/10/30/empowering-your-apps-with-spring-boot-s-property-support. –

+0

Да, я знаю о '@ Autowire', и он отлично работает в других местах. Дело в том, что мне нужно достичь этого компонента из кода, который не может использовать '@ Autowire' –

Смежные вопросы