Springboot + JPA + Summernote 예제 - 2
- 📕 Programing/Spring
- 2021. 3. 8. 18:15
ImageController
package com.kyhslam.controller;
import com.kyhslam.domain.UploadFile;
import com.kyhslam.service.FileService;
import com.kyhslam.service.ImageService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.PrintWriter;
import java.time.LocalDateTime;
import java.util.UUID;
@RestController
@RequiredArgsConstructor
@Slf4j
public class ImageController {
private final ImageService imageService;
private final FileService fileService;
@PostMapping("/image")
public void handlerFileUpload(@RequestParam("file")MultipartFile file, HttpServletRequest request
, HttpServletResponse response) {
try {
//UploadFile uploadFile = imageService.store(file);
//response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String realFolder = "D:\\image";
UUID uuid = UUID.randomUUID();
//업로드할 파일 이름
String org_filename = file.getOriginalFilename();
String str_filename = uuid.toString() + org_filename;
log.info("org_filename ==== " + org_filename);
log.info("str_filename ==== " + str_filename);
String filePath = realFolder + "\\" + str_filename;
UploadFile upload = new UploadFile();
upload.setFilepath(filePath);
upload.setRegDate(LocalDateTime.now());
upload.setFilename(org_filename);
upload.setSavedName(str_filename);
fileService.save(upload);
log.info("filePath ==== " + filePath);
File f = new File(filePath);
if(f.exists()) {
f.mkdirs();
}
file.transferTo(f);
out.close();
} catch (Exception e){
e.printStackTrace();
}
}
}
ArticleController
package com.kyhslam.controller;
import com.kyhslam.domain.Article;
import com.kyhslam.service.ArticleService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import java.time.LocalDateTime;
@Controller
@Slf4j
@RequiredArgsConstructor
public class ArticleController {
private final ArticleService articleService;
@PostMapping("article/save")
public String save(Article article) {
article.setRegDate(LocalDateTime.now());
log.info(" ------- save ------");
log.info("article ==== " +article);
articleService.save(article);
return "";
}
}
ArticleRepository
package com.kyhslam.repository;
import com.kyhslam.domain.Article;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager;
@Repository
@RequiredArgsConstructor
public class ArticleRepository {
private final EntityManager em;
public void save(Article article) {
em.persist(article);
}
}
FileRepository
package com.kyhslam.repository;
import com.kyhslam.domain.UploadFile;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.EntityManager;
import java.util.List;
@Repository
@RequiredArgsConstructor
public class FileRepository {
private final EntityManager em;
public UploadFile save(UploadFile uploadFile) {
em.persist(uploadFile);
return uploadFile;
}
public List<UploadFile> findAll() {
return em.createQuery("select u from UploadFile u", UploadFile.class)
.getResultList();
}
}
ArticleService
package com.kyhslam.service;
import com.kyhslam.domain.Article;
import com.kyhslam.repository.ArticleRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class ArticleService {
private final ArticleRepository articleRepository;
@Transactional
public void save(Article article) {
articleRepository.save(article);
}
}
FileService
package com.kyhslam.service;
import com.kyhslam.domain.UploadFile;
import com.kyhslam.repository.FileRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class FileService {
private final FileRepository fileRepository;
@Transactional
public UploadFile save(UploadFile uploadFile) {
fileRepository.save(uploadFile);
return uploadFile;
}
public List<UploadFile> findAll() {
return fileRepository.findAll();
}
}
'📕 Programing > Spring' 카테고리의 다른 글
스프링 빈 조회 (0) | 2021.09.01 |
---|---|
[Datatables] JPA 페이징 처리 예제 (0) | 2021.03.31 |
Springboot + JPA + Summernote 예제 - 1 (0) | 2021.03.08 |
[Intellij] JSP 연동 후 한글깨짐 현상 (0) | 2021.01.21 |
Springboot 와 Mybatis 연동 (0) | 2020.05.19 |