检查启动后添加特定数据 - spring boot
add specific data after checking on startup - spring boot
我的 spring 应用程序中有一个 DatabaseLoader
class,它是这样的:
@Configuration
@Slf4j
public class DatabaseLoader {
@Bean
CommandLineRunner initDatabase(UserRepository userRepository) {
return args -> {
try{
userRepository.getOne(100L);
}
catch (Exception e){
log.error(e.getMessage());
userRepository.save(new User());
}
};
}
}
我只是想在每次运行此应用程序时检查,数据库中是否存在具有特定 (100) 的用户,如果没有记录并创建一个,否则就通过。
但这似乎不起作用,因为我对 GET /user
的请求是空的。
我稍微更改了代码以检查这段代码是否运行:
log.info("this works");
log.info(userRepository.getOne(100L).toString());
这是我得到的:
2019-11-02 11:40:58.837 INFO 14332 --- [ restartedMain] com.mua.scraper.DatabaseLoader : this works
2019-11-02 11:40:58.872 ERROR 14332 --- [ restartedMain] com.mua.scraper.DatabaseLoader : could not initialize proxy [com.mua.scraper.model.User#100] - no Session
将@Configuration
更改为@Component
将其用于命令行运行程序
@Component
public class CommandLineDatabaseLoader implements CommandLineRunner {
@Autowired
UserRepository userRepository;
@Override
public void run(String...args) throws Exception {
try{
userRepository.getOne(100L);
} catch (Exception e){
e.printStackTrace();
}
}
}
我的 spring 应用程序中有一个 DatabaseLoader
class,它是这样的:
@Configuration
@Slf4j
public class DatabaseLoader {
@Bean
CommandLineRunner initDatabase(UserRepository userRepository) {
return args -> {
try{
userRepository.getOne(100L);
}
catch (Exception e){
log.error(e.getMessage());
userRepository.save(new User());
}
};
}
}
我只是想在每次运行此应用程序时检查,数据库中是否存在具有特定 (100) 的用户,如果没有记录并创建一个,否则就通过。
但这似乎不起作用,因为我对 GET /user
的请求是空的。
我稍微更改了代码以检查这段代码是否运行:
log.info("this works");
log.info(userRepository.getOne(100L).toString());
这是我得到的:
2019-11-02 11:40:58.837 INFO 14332 --- [ restartedMain] com.mua.scraper.DatabaseLoader : this works
2019-11-02 11:40:58.872 ERROR 14332 --- [ restartedMain] com.mua.scraper.DatabaseLoader : could not initialize proxy [com.mua.scraper.model.User#100] - no Session
将@Configuration
更改为@Component
将其用于命令行运行程序
@Component
public class CommandLineDatabaseLoader implements CommandLineRunner {
@Autowired
UserRepository userRepository;
@Override
public void run(String...args) throws Exception {
try{
userRepository.getOne(100L);
} catch (Exception e){
e.printStackTrace();
}
}
}