2016-06-19 3 views
-2

Я использую Spring Boot для чтения и записи в CSV-файл, но я могу понять, что тег @Bean. Почему мы используем этот тег для обработки или записи.Spring Boot Пример Понимание

Например:

@Bean 
    public Step step1() { 
     return stepBuilderFactory.get("step1") 
       .<Person, Person> chunk(10) 
       .reader(reader()) 
       .processor(processor()) 
       .writer(writer()) 
       .build(); 
    } 

У меня есть еще один вопрос, почему мы проходим step1 в методе GET?

ответ

0

Bean аннотация заключается в создании компонента типа Step, вы можете ввести этот компонент в job.

@Bean 
@Autowired 
public Job importUserJob(Step step) { // auto-wired the bean 
    return jobBuilderFactory.get("importUserJob") 
      .incrementer(new RunIdIncrementer()) 
      .listener(listener()) 
      .flow(step) // note this 
      .end() 
      .build(); 
} 

Бин аннотаций не требуется, если вы прямого вызова метода step1 к работе

@Bean 
public Job importUserJob() { // no args 
    return jobBuilderFactory.get("importUserJob") 
      .incrementer(new RunIdIncrementer()) 
      .listener(listener()) 
      .flow(step1()) // directly calling the method 
      .end() 
      .build(); 
} 

В примере шаг и работу на том же классе, поэтому они непосредственно называют метод, но если они оба в разных классах, тогда вы должны сделать их как bean и впрыснуть в класс, который вам нужен.

step1 это имя шага создается с завода stepBuilderFactory

UPDATE

Выполнение приложения с и без Bean аннотацией, получить список бинов, если ваш метод помечается Bean вас» вы получите bean из контекста

ApplicationContext context = SpringApplication.run(SpringBoot.class, args); 
    String[] beans = context.getBeanDefinitionNames(); 
    for (String bean : beans) { 
     System.out.println(bean); 
    } 
+0

Still @Bean не ясен. Не могли бы вы рассказать об этом подробнее? –

+0

Он похож на определение компонента в XML '', если вы аннотируете метод с тегом bean, будет создан bean-компонент и что bean можно вводить в любом месте, см. код, который я опубликовал, я аннотировал метод задания с помощью '@ Autowired' и передавал« Step step »в качестве аргумента, bean-компонент будет автоматически подключаться – Saravana