2016-10-25 11 views
0

Хотите поставить класс в HashMap. Для этого я создал Bean с @Service. Это он:Spring Boot - Как создать вручную bean-компонент и передать его на карту хэша

@Service 
public class ServiceManagerImpl implements ServiceManager { 

@Override 
public void registerService() { 
    // registerService will put this in the HashMap! 
    dispatcher.registerService("serviceList", getServiceListImpl()); 
} 

@Bean 
public BusinessService getServiceListImpl() { 
    return new ServiceListManager(); 
} 
} 

Это правильный способ сделать что-то вроде этого?

ответ

1

Переместите определение компонента из класса, аннотированного с помощью @Service, в класс конфигурации, аннотированный с помощью @Configuration (или, по крайней мере, перейдите к основному классу с аннотацией @SpringBootApplication, если у вас есть). Затем Autowire это bean здесь в классе Service. `

@Autowired BusinessService BusinessService

посмотри здесь Where to put @Bean in Spring Boot?

+0

Изменения @ Услуги @ конфигурация бросает _BeanCreatinException_. Что вы подразумеваете под _move к основному классу? Не ясно для меня. – MissBonbon

+0

Какая ваша точка входа в приложение? где ваш основной метод? смотрите здесь http://stackoverflow.com/questions/29146019/where-to-put-bean-in-spring-boot?rq=1 –

+0

Хорошо, теперь я знаю, что вы имеете в виду ... И что я должен делать, когда я хочу динамически загружать Beans в контекст приложения? Тогда файл конфигурации не будет работать. – MissBonbon