【问题标题】:Spring Boot Example UnderstandingSpring Boot 示例理解
【发布时间】:2016-06-19 11:18:28
【问题描述】:

我正在使用 Spring Boot 读取和写入 CSV 文件,但我无法理解 @Bean 标签。为什么我们使用这个标签来处理或写入。

例如:

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

我还有另一个问题,为什么我们在 get 方法中传递 step1

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    Bean注解是创建一个Step类型的bean,你可以把这个bean注入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方法job不需要Bean注解

    @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

    更新

    使用和不使用 Bean 注释执行您的应用程序,获取 bean 定义列表,如果您的方法使用 Bean 注释,您将从上下文中获取一个 bean

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

    【讨论】:

    • 还是@Bean 不清楚。你能用一些例子来详细说明一下吗?
    • 类似于在XML中定义一个bean&lt;bean id="{bean-name}" class="{class-name}"&gt;,如果你用bean标签注释一个方法,就会创建一个bean,并且该bean可以在任何地方注入,请看我发布的代码,我用@Autowired 注释了job 方法并将Step step 作为参数传递,step bean 将自动连接
    猜你喜欢
    • 2017-11-24
    • 2016-09-20
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 2015-02-27
    • 2020-05-11
    相关资源
    最近更新 更多