소개
안녕하세요? 송자바 입니다. 현재 프로젝트에 투입되어서 일하고 있는 실무 개발자 입니다. 경력은 16년차 이상으로 Backend, Frontend 모두 경험하고 개발이 가능합니다. 이 기술과 노하우들을 여러분들에게 알려드리고자, 시간여유가 생길때마다 영상을 올리고 있습니다. Backend Spring BOOT를 시작으로 Frontend Vuejs, React DBMS MariaDB, MySQL, Oracle, MSSQL 등... 등 다양한 기술들의 경험과 노하우 및 지식을 올릴예정입니다. 감사합니다.
멘토링, 초급, 중급, 고급 속성강의 등 다양하게 레슨도 가능합니다.
관련 궁금사항은 연락주시면 자세히 설명드릴게요.
이메일 : dev.songjava@gmail.com
블로그 : http://blog.naver.com/stylehosting
유투브 : https://youtube.com/@songjava?si=KykTqZncKM1WslL2
강의
수강평
- 자바 스프링부트 활용 웹개발 실무용
게시글
질문&답변
spring boot version
네 하셔도 상관없어요
- 0
- 1
- 259
질문&답변
강사님. 코드관련 질문드립니다.
hmchoi님 강의가 도움이되신다니 다행입니다. 깃으로 e11까지만 관리되어서 e11 브랜치로 공유드려요 https://github.com/stylehosting/example-spring/tree/E11
- 0
- 1
- 297
질문&답변
강의 질문드립니다 [ApplicationContext]
안녕하세요 hmchoi님 부족한강의일수도있는데 좋은내용으로 얘기해주셔서 고맙습니다~^^ ApplicationContext는 org.springframewotk.conext 패키지에있는걸 import하셔야해요 현재는 apache 패키지를 import하셔서 오류나는거같아요 그리고 위에스샷에서는 applicationConext 사용안하니 지우셔도될거같아요~^^
- 0
- 1
- 342
질문&답변
아무리해봐도 해결이되지않네요 ㅠ
Db board테이블에 Title 컬럼에 not null로 생성되있어요 위오류는 title값이 insert시 값이 null로 들어가서 나는 오류에요 지금 스샷에 get으로 param으로 넘기고있는데 컨트롤러에서 get으로 넘어오는 title의 값을 잘받아지는지 체크하시구 안된다면 그부분을 수정하셔야되요 그 이후에 서비스 레파지토리까지 연결하고 xml 까지 title의 값에 넘기는부분이 잘맵핑되었는지 확인해보셔요
- 0
- 1
- 356
질문&답변
레포지토리 검색을 못한다네요 ㅠㅠ
MybatisConfiguration 클래스에 아래 어노테이션이 적용되어있는지 확인해보시구요 @MapperScan(basePackages = "kr.edu.randi.mvc.repository") ArticleRepository 클래스에 아래 어노테이션이 추가되어있는지 확인해보시기 바랍니다. @Repository 예제로 완성된 샘플소스에서는 위에 2개가 들어가있는 상태에요
- 0
- 1
- 6.4K
질문&답변
주석 단축키가 뭔가요
Eclipse 에디터에서 class 선언전후/ 변수라인 / 메소드라인 에서 SHIFT + ALT + J 누르시면 생겨요
- 0
- 1
- 448
질문&답변
2강에 setMapperLocations 에 에러
import org.springframework.core.io.support.PathMatchingResourcePatternResolver; factory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/sql/*.xml")) 이렇게 사용하시면 오류가 해결되실거에요.
- 0
- 1
- 667
질문&답변
E03 영상 관련.
안녕하세요 gksmfwlsgh님, https://youtu.be/groXYLpRndI 위에 영상 링크 클릭하시면 나올거에요 Url로 접근시 잘나오는데요 인프런에서 플레이안나오는 버그가 발생하는거같습니다.
- 0
- 1
- 291
질문&답변
질문드립니다
안녕하세요 박인규님 문제가 없을거같습니다~^^
- 0
- 1
- 284
질문&답변
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
- 222