DataInitializer.java
Java/Baasid/src/main/java/com/baasid/config/DataInitializer.java
package com.baasid.config;
import com.baasid.entity.Goods;
import com.baasid.entity.SystemUser;
import com.baasid.repository.GoodsRepository;
import com.baasid.repository.SystemUserRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.context.annotation.Profile;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;
/**
* 啟動時自動建立測試資料(僅在 {@code dev} profile 啟用)。
* 若資料庫已有使用者資料則跳過,避免重複插入。
*/
@Component
@Profile("dev")
public class DataInitializer implements CommandLineRunner {
private static final Logger log = LoggerFactory.getLogger(DataInitializer.class);
private final SystemUserRepository userRepository;
private final GoodsRepository goodsRepository;
private final PasswordEncoder passwordEncoder;
public DataInitializer(SystemUserRepository userRepository,
GoodsRepository goodsRepository,
PasswordEncoder passwordEncoder) {
this.userRepository = userRepository;
this.goodsRepository = goodsRepository;
this.passwordEncoder = passwordEncoder;
}
/**
* 應用程式啟動完成後執行:可安全假設 Repository、資料源已就緒。
*/
@Override
public void run(String... args) {
if (userRepository.count() > 0) {
log.info("資料庫已有資料,跳過初始化");
return;
}
log.info("開始初始化測試資料...");
String encodedPassword = passwordEncoder.encode("password123");
SystemUser admin = new SystemUser("admin", encodedPassword, "管理員");
SystemUser user01 = new SystemUser("user01", encodedPassword, "測試用戶");
admin = userRepository.save(admin);
user01 = userRepository.save(user01);
createGoods("蘋果", admin);
createGoods("香蕉", admin);
createGoods("鍵盤", user01);
log.info("測試資料初始化完成");
log.info("測試帳號: admin / password123");
log.info("測試帳號: user01 / password123");
}
/** 建立一筆商品並關聯建立者與最後更新者為同一使用者。 */
private void createGoods(String name, SystemUser user) {
Goods goods = new Goods();
goods.setName(name);
goods.setCrUser(user);
goods.setUpUser(user);
goodsRepository.save(goods);
}
}
Articoli correlati
init.sql
init.sql — sql source code from the Java learning materials (Java/Baasid/sql/init.sql).
Leggi l'articolo →BaasidApplication.java
BaasidApplication.java — java source code from the Java learning materials (Java/Baasid/src/main/java/com/baasid/BaasidApplication.java).
Leggi l'articolo →OpenApiConfig.java
OpenApiConfig.java — java source code from the Java learning materials (Java/Baasid/src/main/java/com/baasid/config/OpenApiConfig.java).
Leggi l'articolo →SecurityConfig.java
SecurityConfig.java — java source code from the Java learning materials (Java/Baasid/src/main/java/com/baasid/config/SecurityConfig.java).
Leggi l'articolo →AuthController.java
AuthController.java — java source code from the Java learning materials (Java/Baasid/src/main/java/com/baasid/controller/AuthController.java).
Leggi l'articolo →GoodsController.java
GoodsController.java — java source code from the Java learning materials (Java/Baasid/src/main/java/com/baasid/controller/GoodsController.java).
Leggi l'articolo →