Java 当我运行spring启动程序时,是否有任何方法可以作为第一件事来填充数据库
我有一个应用程序,它读取文件夹中的csv文件,然后读取这些csv文件并将它们放入数据库,但我无法在运行spring boot程序后立即找出如何填充数据库 my FlightService.javaJava 当我运行spring启动程序时,是否有任何方法可以作为第一件事来填充数据库,java,mysql,spring,Java,Mysql,Spring,我有一个应用程序,它读取文件夹中的csv文件,然后读取这些csv文件并将它们放入数据库,但我无法在运行spring boot程序后立即找出如何填充数据库 my FlightService.java package com.package.service; @Service public class FlightService{ File dir = new File("C:\\Users\\Akhil\\Desktop\\assignmentFour\\CSV"
package com.package.service;
@Service
public class FlightService{
File dir = new File("C:\\Users\\Akhil\\Desktop\\assignmentFour\\CSV");
static FlightDao flightDao = (FlightDao) AppContextUtil.context.getBean("flightDao");
public void readCSV() {
File files[] = dir.listFiles();
ArrayList<String> listofFileNames = new ArrayList<String>();
for (File file : files) {
Airline airline = FlightController.readFile(file);
flightDao.saveAirline(airline);
}
}
}
我不知道我在这里做错了什么任何建议都会非常有用您可以将文件保存在类路径(src/main/resources)中,并按照下面提到的方式加载文件 package.com.package.service @服务 公共班机服务{
public void readCSV() {
InputStream stream = readerFile("CSV.txt");
try (BufferedReader br = new BufferedReader(new InputStreamReader(stream))) {
String line = br.readLine();
System.out.println(line);
} catch (IOException e) {
//do nothing
}
}
private InputStream readerFile(String fileName) {
return getClass().getClassLoader().getResourceAsStream(fileName);
}
}您可以将文件保存在类路径(src/main/resources)中,并按如下所述加载文件 package.com.package.service @服务 公共班机服务{
public void readCSV() {
InputStream stream = readerFile("CSV.txt");
try (BufferedReader br = new BufferedReader(new InputStreamReader(stream))) {
String line = br.readLine();
System.out.println(line);
} catch (IOException e) {
//do nothing
}
}
private InputStream readerFile(String fileName) {
return getClass().getClassLoader().getResourceAsStream(fileName);
}
}所谓的“填充”是指创建数据库和所有必需的表吗?是的,但这不是问题所在,因为数据库正在创建,数据也已添加(我运行了测试代码以找到答案),但如何在运行我的程序和Visit m homepage
(FlightDao)AppContextUtil.context.getBean(“FlightDao”)后立即执行此操作
正在尝试在bean存在之前使用它。使用构造函数(首选)或@Autowired依赖项注入。使用static试图绕过Springbean的生命周期,这是行不通的。另请参见@PostConstruct,以便在应用程序启动后运行方法。所谓“填充”是指创建数据库和所有必需的表吗?是的,但这不是问题所在,因为数据库正在创建,数据也已添加(我运行了测试代码来了解),但如何在运行我的程序和Visit m homepage(FlightDao)后立即执行此操作AppContextUtil.context.getBean(“flightDao”)
试图在bean存在之前使用它。使用构造函数(首选)或@Autowired依赖项注入。使用static试图绕过Springbean的生命周期,这是行不通的。另请参见@PostConstruct,以便在应用程序启动后运行方法。
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flightService' defined in file [C:\Users\Akhil\Desktop\project\target\classes\com\package\service\FlightService.class]: Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError
public void readCSV() {
InputStream stream = readerFile("CSV.txt");
try (BufferedReader br = new BufferedReader(new InputStreamReader(stream))) {
String line = br.readLine();
System.out.println(line);
} catch (IOException e) {
//do nothing
}
}
private InputStream readerFile(String fileName) {
return getClass().getClassLoader().getResourceAsStream(fileName);
}