Back-End7 Spring Batch를 진행하기위해서 만드는 작업들..(S3, ShellScript 등) 기존에 이제 Spring Batch를 포스팅을 했었는데, 해당 파일을 읽어오기 위해서는 접근할 수 있는 디렉토리가 존재해야 한다. 그래서 aws S3를 sftp로만 접근할 수 있게 만들고, 그 담에 거기에 어느 착한 회사는 본인들의 배치를 따로 돌려서 해당되는 경로에 떨어뜨리게 끔 해줬지만, 그렇지 않은 회사들은 본인들의 ftp서버를 열어놓고 거기에서 가져오게끔 만들어 놓았다.... S3를 sftp로 만드는 건 여기저기 찾아보면 많이 있으니 이 부분은 생략하고, 일단 ftp서버에 허용되는 ip가 있었는데, 그 ip는 회사 ip가 아닌 EC2의 서버 ip로 접속을 하게끔 해줬다.(ShellScript를 돌리기 위함) 그래서 sh로 작성된 파일의 스크립트를 보면 #!/bin/bash # FTP 접속 정보 f.. 2023. 7. 26. Spring Batch 및 Scheduler 관련... 회사에 입사하고, Spring Batch와 Scheduler로 구성된 배치서버를 처음 봤다. 그리고 배치 API를 만들어서 해당 스케쥴러로 돌리는 거 까지 성공했다. 이 과정에 있어서 이해하고, 막혔던 부분에 대해서 블로깅을 해보도록 하겠다. 일단 Spring Batch란 Spring에서 제공하는 프레임워크 중에 하나이다. 기본적으로 JOB을 등록해서 사용하며, BatchConfiguration과 Step으로 관리한다. BatchConfiguration은 BatchJob을 등록하는 곳이다. 기본적으로 BatchConfiguration에서 BatchStep을 등록하고 이 Step에 대한 Job을 빈으로 등록한다. 그리고 이제 Step Step은 보통 reader와 writer로 나누어져 있고, 이 사이에 .. 2023. 7. 25. intelij를 쓰다 보면 나오는 Spring의 의존 주입(DI) 방식에 대해서... intelij(프리미엄판)를 막 도입해서 사용하는 회사에 다닐 때, eclipse에서 쓰던 프로젝트를 intelij로 옮겼을때가 있었는데, 거기서 보면 Sping의 의존주입 방식을 Warning으로 처리되는 경우가 있다. inteij는 굉장히 assist가 좋은 ide tool이기 때문에 현재 코드보다 더 나은 코드 방향을 제시해준다. 중복되는 코드를 하나의 클래스로 묶어준다던지, 더 좋은 제안을 tool자체에서 해준다. 어째든 사설이 길었는데, eclipse에서는 @Autowired를 이용해서 DI를 했었다. 근데 이게 intelij로 오니 Warning으로 나오는 것이다. 예를 들어, 어떤 클래스에 Spring Bean 객체를 생성하는데, @Autowired를 이용해서 @Controller publi.. 2022. 12. 2. 게시판 이미지에 대한 고찰?(2) 첫 글을 쓰고 이것 저것 고민하면서 확신이 섰는데, 일단, 게시글 작성시에 image가 올라갈때 그냥 서버에 올리고, hidden input을 만들고 이미지가 올라갈때 return 값으로 해당 image의 src=url을 받아서, create시에 input에 담긴 url을 넘겨주면 되는거였다. 그리고 s3 특성상 같은 이름의 파일이 올라가면 overwrite 되는 옵션이 있는데, 게시글에 이미지를 올릴때 beckend 단에서 random으로 난수를 생성해서 파일의 이름을 rename해서 올리면 되는거였고, create시에 hidden input에 담긴 url들을 db에 저장해서 관리하면 되는거였다. 하지만 어째든 게시판을 만들다가 취소시에 만들어진 image에 대한 처리는 batch job을 생성해서 d.. 2022. 11. 10. 게시판 이미지에 대한 고찰? 최근에 다시 게시판을 만들던 중에 이런 생각이 들었다. 붙힘파일 이나 대표사진 같은건 create시에 파일을 저장하면 되는데, 본문에 저장되는 파일 같은 경우에는 어떻게 처리 할까 라는 고찰이였다. 티스토리를 확인해보니, 본문에 이미지를 올리면 서버에 올라가는것 같았다.(나도 여기까지는 했다.) 이후 처리가 궁금한데, 만약 저장하지 않고 넘어가면, 해당 파일이 어떻게 사라지냐는 것이였다. 내가 생각한 방법은, 1. 처음에는 서버에 저장하지 말고, 브라우저의 로컬 스토리지에 먼저 저장 위 사진과 같은 공간에 base64로 파일을 저장하면 된다고 한다. 해당한곳에 저장하는것 까진 성공했는데, 불러오기가 잘 안되서 관뒀는데, 생각해보니 모든 사용자가 브라우저의 로컬 스토리지를 사용할 수 있는 브라우저를 쓰는지.. 2022. 11. 2. 외부에서 API SERVER 접근 가능한가? 원래 글을 어제 쓰고 싶었는데, 티스토리가 폭파되는 바람에 오늘로 미뤄졌다. ㅋㅋ CRUD method를 작성중에 WEB SERVER는 Spring Security로 적용이 되어 있는데, API SERVER는 Spring Security 적용이 안 되어 있으면서 OAuth로 같이 묶여있지 않았을때, API SERVER를 PostMan 같은 Tool로 해당 URL을 접근하면 권한이 필요한 delete query나 create query가 작동되지 않을까라는 고민을 하였다. 그래서 흠.. 그러면 어떡하지 하는 생각을 하다보니, 일단 PostMan의 Localhost call은 WAS서버가 작동하고있는 PC에 설치를 해야만 지원이 될테고, API서버의 포트를 바꿔서 톰켓으로 올려놓으면, 접근이 불가능 할거라고.. 2022. 10. 20. [JPA] @Qurey tag를 사용할 때 is not mapped 에러 관련 @Query("SELECT b FROM Board b WHERE b.title LIKE %?1% AND b.contents LIKE %?2%") 이렇게 Repository에서 Query annotation을 사용할때 is not mapped라는 에러가 나올 때가 있다. 분명히 본인은 저 쿼리의 FROM 뒤의 테이블명을 db의 테이블명이랑 잘 맞췄는데도 말이다. 그럴땐 당황하지말고, Model의 클래스 명으로 대소문자를 구분해서 맞춰주면 해결된다. 아 Model class에 @Table이 잘 맵핑되어 있다는 가정하에 해야한다. 2022. 10. 7. 이전 1 다음