Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用对方在春季编写的包_Java_Spring_Javabeans - Fatal编程技术网

Java 使用对方在春季编写的包

Java 使用对方在春季编写的包,java,spring,javabeans,Java,Spring,Javabeans,因此,我尝试使用的软件包如下: https://github.com/spring-projects/spring-batch-extensions/tree/master/spring-batch-excel 在该页面上是该包的Springbean配置。我是spring的新手,不知道如何实际编写使用bean的代码。 配置如下所示: @Bean public PoiItemReader excelReader() { PoiItemReader reader = new PoiItemR

因此,我尝试使用的软件包如下:

https://github.com/spring-projects/spring-batch-extensions/tree/master/spring-batch-excel

在该页面上是该包的Springbean配置。我是spring的新手,不知道如何实际编写使用bean的代码。 配置如下所示:

@Bean
public PoiItemReader excelReader() {
    PoiItemReader reader = new PoiItemReader();
    reader.setResource(new ClassPathResource("/path/to/your/excel/file"));
    reader.setRowMapper(rowMapper());
    return reader;
}

@Bean
public RowMapper rowMapper() {
    return new PassThroughRowMapper();
}
@Configuration
public class MyConfiguration {
  @Bean
  public A a(B b) {
     return new A(b);
  }

  @Bean
  public B b() {
     return new B();
  }
}
因此,如果我在某处有另一个名为reader的类,我如何使用这个bean配置从excel文件中获取POITEMReader从
.setRowMapper()
获取的行

行映射器有一个数组列表,用于拆分excel行中的值,但我不知道如何获取该列表

我是否调用excelReader()方法


POITEMReader没有任何与之关联的有用方法,因此我认为我不应该这样做。

您应该在要读取文件的类上声明@Service或@Component,并使用@Autowired注释来使用POITEMReader

@Service
public class SomeclassName {

    @Autowired
    private PoiItemReader excelReader;

    public void somemethod() {
    //do some reading stuff here using excelReader
    }
}

从代码片段来看,您似乎正在声明bean的类上使用
@Configuration

使用Java配置是定义bean的方法之一,这样spring就可以理解它们并在运行时注入属性。 另一种方法是使用注释,如
@Service、@Component、@Controller
等等(答案由maneesh提供)

因此,在Spring中首先要了解的是,有许多配置方法(还有一种老方法,使用XML和基于Groovy的配置)

现在,当您编写一个spring应用程序时,通常使用其他springbean中的springbean

所以,如果您将bean A配置为在bean B上有一个引用,Spring将为您注入它。例如:

public class A {
    private B b;
    public A(B b) {
       this.b = b;
    }

    public void doSomething() {
      b.foo();
    } 
}

public class B {
    public void foo() {...}
}
定义这些bean的“java配置”方式如下所示:

@Bean
public PoiItemReader excelReader() {
    PoiItemReader reader = new PoiItemReader();
    reader.setResource(new ClassPathResource("/path/to/your/excel/file"));
    reader.setRowMapper(rowMapper());
    return reader;
}

@Bean
public RowMapper rowMapper() {
    return new PassThroughRowMapper();
}
@Configuration
public class MyConfiguration {
  @Bean
  public A a(B b) {
     return new A(b);
  }

  @Bean
  public B b() {
     return new B();
  }
}
在您的示例中,您对配置使用了另一种语法(line
reader.setRowMapper(rowMapper());

@配置 公共类MyConfiguration{

  @Bean
  public A a() {
     return new A(b());
  }

  @Bean
  public B B() {
     return new B();
  }
}

从A来看,您似乎只调用了一个创建B的方法。但事实并非如此,spring应该将您的配置包装在某种运行时代理中,例如,如果您多次调用
B()
(对于许多bean),它将始终返回相同的实例,因为B有一个单例作用域。所有配置类中的All-in-All应该被视为创建bean的Java DSL,而不是常规代码


现在考虑的最后一个问题是所有这些配置都是从哪里开始的。这个问题的答案取决于运行的环境。通常,Spring已经集成到Tomcat或其他服务器上运行的现有项目中,或者如果它是Spring Bug应用程序,它已经提供了“众所周知的”。集成方式。所以你可以从你的项目中询问某人(我认为这不是家庭作业或其他事情)你的应用程序是如何与spring集成的,这超出了这个问题的范围。

所以我遇到的问题是,POITEMReader中的所有方法要么是受保护的,要么是设置器,所以我实际上无法对该读取器做任何事。我可以找到的所有教程都停留在配置上,但我看不到任何方法可以真正实现在git hub存储库中有一个名为Poiseet的类,它似乎很有用,它有公共方法,PoItemReader中的一个受保护的方法返回一个表。我所能想到的就是尝试编辑jar,使该方法公开,看看我是否可以用它做些什么。你能看一下这是教程吗我很困惑。它在返回条目读取器时停止,但我不知道如何处理返回的条目读取器,因为没有任何有用的方法与之关联。