Notice
Recent Posts
Recent Comments
Link
개발 무지렁이
[Spring Boot] 개발용 샘플데이터 생성 (URL 이미지 포함) 본문
[DevInitData.java]
@Configuration
@Profile("dev") // 이 클래스에 정의된 Bean 들은 dev 모드에서만 활성화된다.
public class DevInitData {
// CommandLineRunner: 앱 실행 직후 초기데이터 세팅 및 초기화에 사용된다.
@Bean
CommandLineRunner init(MemberService memberService, ArticleService articleService, PasswordEncoder passwordEncoder) {
return args -> {
String password = passwordEncoder.encode("1234");
Member member1 = memberService.join("user1", password, "user1@test.com");
memberService.setProfileImgByUrl(member1, "https://picsum.photos/200/300");
Article article1 = articleService.write(member1, "제목", "내용");
articleService.addGenFileByUrl(article1, "common", "inBody", 1, "https://picsum.photos/200/300");
articleService.addGenFileByUrl(article1, "common", "inBody", 2, "https://picsum.photos/200/300");
articleService.addGenFileByUrl(article1, "common", "inBody", 3, "https://picsum.photos/200/300");
articleService.addGenFileByUrl(article1, "common", "inBody", 4, "https://picsum.photos/200/300");
}
}
}
[MemberService.java]
@Service
@RequiredArgsConstructor
public class MemberService {
@Value("${custom.genFileDirPath}")
private String genFileDirPath;
private final MemberRepository memberRepository;
public void setProfileImgByUrl(Member member, String url) {
String filePath = Util.file.downloadImg(url, genFileDirPath + "/" + getCurrentProfileImgDirName() + "/" + UUID.randomUUID());
member.setProfileImg(getCurrentProfileImgDirName() + "/" + new File(filePath).getName());
memberRepository.save(member);
}
}
[ArticleService.java]
@Service
@RequiredArgsConstructor
public class ArticleService {
public void addGenFileByUrl(Article article, String typeCode, String type2Code, int fileNo, String url) {
genFileService.addGenFileByUrl("article", article.getId(), typeCode, type2Code, fileNo, url);
}
}
[GenFileService.java]
@Service
@RequiredArgsConstructor
public class GenFileService {
private final GenFileRepository genFileRepository;
public void addGenFileByUrl(String relTypeCode, Long relId, String typeCode, String type2Code, int fileNo, String url) {
String fileDir = getCurrentDirName(relTypeCode);
String downFilePath = Util.file.downloadImg(url, AppConfig.GET_FILE_DIR_PATH + "/" + fileDir + "/" + UUID.randomUUID());
File downloadedFile = new File(downFilePath);
String originFileName = downloadedFile.getName();
String fileExt = Util.file.getExt(originFileName);
String fileExtTypeCode = Util.file.getFileExtTypeCodeFromFileExt(fileExt);
String fileExtType2Code = Util.file.getFileExtType2CodeFromFileExt(fileExt);
int fileSize = 0;
try {
fileSize = (int) Files.size(Paths.get(downFilePath));
} catch (IOException e) {
throw new RuntimeException(e);
}
GenFile genFile = GenFile.builder()
.relTypeCode(relTypeCode)
.relId(relId)
.typeCode(typeCode)
.type2Code(type2Code)
.fileExtTypeCode(fileExtTypeCode)
.fileExtType2Code(fileExtType2Code)
.fileNo(fileNo)
.fileSize(fileSize)
.fileDir(fileDir)
.fileExt(fileExt)
.originFileName(originFileName)
.build();
genFileRepository.save(genFile);
String filePath = AppConfig.GET_FILE_DIR_PATH + "/" + fileDir + "/" + genFile.getFileName();
File file = new File(filePath);
file.getParentFile().mkdirs();
downloadedFile.renameTo(file);
}
}
'Backend > 스프링부트' 카테고리의 다른 글
[Spring Boot] Pageable 인터페이스와 페이징(Paging) 처리 (0) | 2023.06.04 |
---|---|
[Spring Boot] 설정정보(개발용, 배포용, 테스트용) (0) | 2023.01.12 |
[Spring Boot] extra필드에 GenFile 담기 (순서대로) (0) | 2023.01.06 |
[Spring Boot] 여분의 필드 extra (0) | 2023.01.02 |
[Spring Boot] 어노테이션 정리 - 1 (0) | 2022.12.31 |
Comments