์๋ ํ์ธ์? ์ก์๋ฐ ์ ๋๋ค. ํ์ฌ ํ๋ก์ ํธ์ ํฌ์ ๋์ด์ ์ผํ๊ณ ์๋ ์ค๋ฌด ๊ฐ๋ฐ์ ์ ๋๋ค. ๊ฒฝ๋ ฅ์ 16๋ ์ฐจ ์ด์์ผ๋ก Backend, Frontend ๋ชจ๋ ๊ฒฝํํ๊ณ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ด ๊ธฐ์ ๊ณผ ๋ ธํ์ฐ๋ค์ ์ฌ๋ฌ๋ถ๋ค์๊ฒ ์๋ ค๋๋ฆฌ๊ณ ์, ์๊ฐ์ฌ์ ๊ฐ ์๊ธธ๋๋ง๋ค ์์์ ์ฌ๋ฆฌ๊ณ ์์ต๋๋ค. Backend Spring BOOT๋ฅผ ์์์ผ๋ก Frontend Vuejs, React DBMS MariaDB, MySQL, Oracle, MSSQL ๋ฑ... ๋ฑ ๋ค์ํ ๊ธฐ์ ๋ค์ ๊ฒฝํ๊ณผ ๋ ธํ์ฐ ๋ฐ ์ง์์ ์ฌ๋ฆด์์ ์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
๋ฉํ ๋ง, ์ด๊ธ, ์ค๊ธ, ๊ณ ๊ธ ์์ฑ๊ฐ์ ๋ฑ ๋ค์ํ๊ฒ ๋ ์จ๋ ๊ฐ๋ฅํฉ๋๋ค.
๊ด๋ จ ๊ถ๊ธ์ฌํญ์ ์ฐ๋ฝ์ฃผ์๋ฉด ์์ธํ ์ค๋ช ๋๋ฆด๊ฒ์.
์ด๋ฉ์ผ : dev.songjava@gmail.com
Homepage : https://songjava.co.kr
Blog : http://blog.naver.com/stylehosting
Youtube : https://youtube.com/@songjava?si=KykTqZncKM1WslL2
Courses
Reviews
- Practical web development using Java Spring Boot
- Practical web development using Java Spring Boot
- Practical web development using Java Spring Boot
- Practical web development using Java Spring Boot
- Practical web development using Java Spring Boot
Posts
Q&A
spring boot version
๋ค ํ์ ๋ ์๊ด์์ด์
- 0
- 1
- 307
Q&A
๊ฐ์ฌ๋. ์ฝ๋๊ด๋ จ ์ง๋ฌธ๋๋ฆฝ๋๋ค.
hmchoi๋ ๊ฐ์๊ฐ ๋์์ด๋์ ๋ค๋ ๋คํ์ ๋๋ค. ๊น์ผ๋ก e11๊น์ง๋ง ๊ด๋ฆฌ๋์ด์ e11 ๋ธ๋์น๋ก ๊ณต์ ๋๋ ค์ https://github.com/stylehosting/example-spring/tree/E11
- 0
- 1
- 360
Q&A
๊ฐ์ ์ง๋ฌธ๋๋ฆฝ๋๋ค [ApplicationContext]
์๋ ํ์ธ์ hmchoi๋ ๋ถ์กฑํ๊ฐ์์ผ์๋์๋๋ฐ ์ข์๋ด์ฉ์ผ๋ก ์๊ธฐํด์ฃผ์ ์ ๊ณ ๋ง์ต๋๋ค~^^ ApplicationContext๋ org.springframewotk.conext ํจํค์ง์์๋๊ฑธ importํ์ ์ผํด์ ํ์ฌ๋ apache ํจํค์ง๋ฅผ importํ์ ์ ์ค๋ฅ๋๋๊ฑฐ๊ฐ์์ ๊ทธ๋ฆฌ๊ณ ์์์ค์ท์์๋ applicationConext ์ฌ์ฉ์ํ๋ ์ง์ฐ์ ๋๋ ๊ฑฐ๊ฐ์์~^^
- 0
- 1
- 409
Q&A
์๋ฌด๋ฆฌํด๋ด๋ ํด๊ฒฐ์ด๋์ง์๋ค์ ใ
Db boardํ ์ด๋ธ์ Title ์ปฌ๋ผ์ not null๋ก ์์ฑ๋์์ด์ ์์ค๋ฅ๋ title๊ฐ์ด insert์ ๊ฐ์ด null๋ก ๋ค์ด๊ฐ์ ๋๋ ์ค๋ฅ์์ ์ง๊ธ ์ค์ท์ get์ผ๋ก param์ผ๋ก ๋๊ธฐ๊ณ ์๋๋ฐ ์ปจํธ๋กค๋ฌ์์ get์ผ๋ก ๋์ด์ค๋ title์ ๊ฐ์ ์๋ฐ์์ง๋์ง ์ฒดํฌํ์๊ตฌ ์๋๋ค๋ฉด ๊ทธ๋ถ๋ถ์ ์์ ํ์ ์ผ๋์ ๊ทธ ์ดํ์ ์๋น์ค ๋ ํ์งํ ๋ฆฌ๊น์ง ์ฐ๊ฒฐํ๊ณ xml ๊น์ง title์ ๊ฐ์ ๋๊ธฐ๋๋ถ๋ถ์ด ์๋งตํ๋์๋์ง ํ์ธํด๋ณด์ ์
- 0
- 1
- 430
Q&A
๋ ํฌ์งํ ๋ฆฌ ๊ฒ์์ ๋ชปํ๋ค๋ค์ ใ ใ
MybatisConfiguration ํด๋์ค์ ์๋ ์ด๋ ธํ ์ด์ ์ด ์ ์ฉ๋์ด์๋์ง ํ์ธํด๋ณด์๊ตฌ์ @MapperScan(basePackages = "kr.edu.randi.mvc.repository") ArticleRepository ํด๋์ค์ ์๋ ์ด๋ ธํ ์ด์ ์ด ์ถ๊ฐ๋์ด์๋์ง ํ์ธํด๋ณด์๊ธฐ ๋ฐ๋๋๋ค. @Repository ์์ ๋ก ์์ฑ๋ ์ํ์์ค์์๋ ์์ 2๊ฐ๊ฐ ๋ค์ด๊ฐ์๋ ์ํ์์
- 0
- 1
- 6.5K
Q&A
์ฃผ์ ๋จ์ถํค๊ฐ ๋ญ๊ฐ์
Eclipse ์๋ํฐ์์ class ์ ์ธ์ ํ/ ๋ณ์๋ผ์ธ / ๋ฉ์๋๋ผ์ธ ์์ SHIFT + ALT + J ๋๋ฅด์๋ฉด ์๊ฒจ์
- 0
- 1
- 506
Q&A
2๊ฐ์ setMapperLocations ์ ์๋ฌ
import org.springframework.core.io.support.PathMatchingResourcePatternResolver; factory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/sql/*.xml")) ์ด๋ ๊ฒ ์ฌ์ฉํ์๋ฉด ์ค๋ฅ๊ฐ ํด๊ฒฐ๋์ค๊ฑฐ์์.
- 0
- 1
- 751
Q&A
E03 ์์ ๊ด๋ จ.
์๋ ํ์ธ์ gksmfwlsgh๋, https://youtu.be/groXYLpRndI ์์ ์์ ๋งํฌ ํด๋ฆญํ์๋ฉด ๋์ฌ๊ฑฐ์์ Url๋ก ์ ๊ทผ์ ์๋์ค๋๋ฐ์ ์ธํ๋ฐ์์ ํ๋ ์ด์๋์ค๋ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๋๊ฑฐ๊ฐ์ต๋๋ค.
- 0
- 1
- 336
Q&A
์ง๋ฌธ๋๋ฆฝ๋๋ค
์๋ ํ์ธ์ ๋ฐ์ธ๊ท๋ ๋ฌธ์ ๊ฐ ์์๊ฑฐ๊ฐ์ต๋๋ค~^^
- 0
- 1
- 335
Q&A
FileController๊ฐ ์ด๋ป๊ฒ ์ ํ๋์ง ์ข ๋ ํ์ธํด๋ณด๊ณ ์ถ์ต๋๋ค.
์๋ ํ์ธ์ koyoungil97 ๊ฐ๋ฐ์๋, ์ ๊ฐ ๊ฐ์ง๊ณ ์๋ ์์ค๋ฅผ ์ฌ๋ ค๋๋ฆด๊ฒ์. ์กฐ๊ธ ๋ฌ๋ผ์ก์์๋ ์์ง๋ง, ์๋ง ๋น์ทํ ์์ค์ผ๊ฑฐ์์, ๋ง์ฝ์ ๋ค๋ฅธ๋ถ๋ถ์ด์๊ฑฐ๋ ์ปดํ์ผ ์๋ฌ๋๋ ์์ค๊ฐ ์๋ค๋ฉด ์ฒ์์ ํ๋ค์ง๋ง, ์์ฉํด์ ์์ ํ์๊ฑฐ๋ ์ถ๊ฐํ์ ์ ํด๊ฒฐํด๋ณด์๋ฉด ์คํฌ์ ์ ๋์์ด๋์ค์๋์์ด์ package kr.co.songjava.mvc.controller; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.UUID; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import kr.co.songjava.configuration.GlobalConfig; import kr.co.songjava.configuration.exception.BaseException; import kr.co.songjava.configuration.http.BaseResponse; import kr.co.songjava.configuration.http.BaseResponseCode; import kr.co.songjava.mvc.parameter.UploadFileParameter; import kr.co.songjava.mvc.service.UploadFileService; @RestController @RequestMapping("/file") @Api(tags = "ํ์ผ API") public class FileController { Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private GlobalConfig config; @Autowired private UploadFileService uploadFileService; /** * ์ ๋ก๋ ๋ฆฌํด. * * @return */ @PostMapping("/save") @ApiOperation(value = "์ ๋ก๋", notes = "") public BaseResponse save(@RequestParam("uploadFile") MultipartFile multipartFile) { logger.debug("multipartFile : {}", multipartFile); if (multipartFile == null || multipartFile.isEmpty()) { throw new BaseException(BaseResponseCode.DATA_IS_NULL); } // ๋ ์งํด๋๋ฅผ ์ถ๊ฐ String currentDate = new SimpleDateFormat("yyyyMMdd").format(Calendar.getInstance().getTime()); String uploadFilePath = config.getUploadFilePath() + currentDate + "/"; logger.debug("uploadFilePath : {}", uploadFilePath); String prefix = multipartFile.getOriginalFilename().substring( multipartFile.getOriginalFilename().lastIndexOf(".") + 1, multipartFile.getOriginalFilename().length()); String filename = UUID.randomUUID().toString() + "." + prefix; logger.info("filename : {}", filename); File folder = new File(uploadFilePath); // ํด๋๊ฐ ์๋ค๋ฉด ์์ฑ if (!folder.isDirectory()) { folder.mkdirs(); } String pathname = uploadFilePath + filename; String resourcePathname = config.getUploadResourcePath() + currentDate + "/" + filename; File dest = new File(pathname); logger.debug("dest : {}", dest); try { multipartFile.transferTo(dest); // ํ์ผ์ ๋ก๋ ๋ ํ DB์ ์ ์ฅ UploadFileParameter parameter = new UploadFileParameter(); // ์ปจํ ์ธ ์ข ๋ฅ parameter.setContentType(multipartFile.getContentType()); // ์๋ณธํ์ผ๋ช parameter.setOriginalFilename(multipartFile.getOriginalFilename()); // ์ ์ฅํ์ผ๋ช parameter.setFilename(filename); // ์ค์ ํ์ผ ์ ์ฅ๊ฒฝ๋ก parameter.setPathname(pathname); // ํ์ผํฌ๊ธฐ parameter.setSize((int) multipartFile.getSize()); // static resource ์ ๊ทผ ๊ฒฝ๋ก parameter.setResourcePathname(resourcePathname); uploadFileService.save(parameter); } catch (IllegalStateException | IOException e) { logger.error("e", e); } return new BaseResponse(true); } } globals-local.properties ๋ ๋ก์ปฌํ๊ฒฝ์์ ํ์ํ ํ๋กํผํฐ ์ ๋ณด๋ฅผ ์ ์ํ๊ฒ์ด๋ฉฐ, ๋ง์ฝ์ ๊ฐ๋ฐ์๋ฒ ์ด์์๋ฒ๋ฑ ํ๊ฒฝ์ด ์ถ๊ฐ๋๋๊ฒฝ์ฐ๋ globals-dev, globals-prod ๋ฑ์ผ๋ก ๋ง๋ค์ด์ local๊ณผ ๋์ผํ key์ ๊ฐ์ ๋ฃ์ด์ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค. ์์์ ์ค๊ฐ์ค๊ฐ ํธ์งํ๋ค๋ณด๋ ์์ค๊ฐ ์๋ฆฐ๊ฑฐ๊ฐ๋ค์, ์ด ์์๊ณผ ์์ค๊ฐ ๊ธฐ์ด์ดํดํ๋๋ฐ ๋์์ด ๋์๊ธธ ๋ฐ๋๋๋ค.^^
- 0
- 1
- 285