🛠️Backend31 [Spring Boot] Launch4j과 jar 파일을 사용해서 실행 파일(.exe) 만들기 Launch4j 다운로드https://sourceforge.net/projects/launch4j/files/launch4j-3/3.50/ Launch4j Executable Wrapper - Browse /launch4j-3/3.50 at SourceForge.netSpamTitan Email Security and Protection SpamTitan blocks spam, viruses, malware, ransomware, phishing attempts and other email threats.sourceforge.net 파일 생성 경로 지정 및 jar 파일 등록 톱니바퀴를 눌렀을 때 Specify output file with .exe extension 경고 메시지가 뜨는 경우가 있다. O.. 🛠️Backend/Spring 2024. 3. 6. [Spring Boot] jar 파일 실행 시 외부 폴더 이미지 찾아서 내려주기 폴더 구조 생성jar파일이 있는 폴더 아래에 이미지를 저장할 폴더를 생성해준다. 생성한 img 폴더 안에 원하는 이미지 파일을 넣어주면 된다. 폴더 안의 파일을 불러온 후 화면에 출력해주는 코드를 작성한다. 코드 작성@Slf4j@RestController@CrossOrigin@RequiredArgsConstructorpublic class ImageController { @GetMapping("img/**") public ResponseEntity getInternalImage(HttpServletRequest request) throws IOException { log.info("[ImageController - GET, /img/**]"); // 이미지 파일 풀네.. 🛠️Backend/Spring 2024. 2. 15. [Spring Boot] 단위 테스트 성공 시 Spring Rest Docs 파일 생성 API 문서화 프로젝트를 진행하다 보면 다른 업체와 협업을 하거나 프로젝트 정보를 공유하는 경우가 생기게 된다. 많은 API를 모두 설명할 수 없어서 보통은 API 문서를 사용해서 통신에 필요한 정보를 제공하곤 한다. API 문서화 도구를 사용하지 않고도 직접 html 파일로 작성하거나 다른 프로그램으로 작성할 수 있다. 하지만 그렇게 되면 개발과 문서 작업 둘 다 병행해야하기 때문에 많은 시간과 인력을 낭비하게 된다. 그리고 수작업으로 진행하다보면 내용을 빼먹는 경우도 생기게 된다. 그렇기 때문에 대부분 API 문서화 도구 사용을 추천한다. Swagger vs Spring REST Docs 많이 사용하는 API 문서화 도구로는 Swagger와 Spring Rest Docs가 있다. Swagger 장점 .. 🛠️Backend/Spring 2024. 1. 2. [Spring Boot] 단위 테스트 코드 작성 (JUnit 5) Unit 테스트 Java에서 지원하는 JUnit 프레임워크를 이용해 단위 테스트를 실시하는 것을 Unit 테스트라고 한다. @Test 어노테이션이 붙은 함수 및 메소드를 테스트하는 것이다. Spring에서 단위 테스트를 하는 것은 Spring 컨테이너에 올라간 Bean들을 테스트하는 것이다. 단위 테스트를 하는 이유는 작성이 간편해 빠르게 테스트가 가능하고, 불필요한 리소스를 낭비하지 않을 수 있다. JUnit5 어노테이션 @Test JUnit은 각각의 테스트가 서로 영향을 주지 않고 독립적으로 실행되는 것을 원칙으로 한다. 따라서 테스트(메소드)마다 객체를 별도로 생성한다. JUnit4에서는 메소드의 접근제한자를 public으로 선언해야 사용할 수 있었다. JUnit5로 넘어온 후 접근제한자가 Defa.. 🛠️Backend/Spring 2024. 1. 2. [Spring Boot] could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.x.x. 에러 상황 Spring Boot 프로젝트를 생성할 때 Java17과 Java21 중 선택해서 생성해야만 했다. 현 컴퓨터에는 Java8과 Java11 밖에 없었고 Java17을 설치하고 프로젝트를 생성했다. 그리고 gradle을 빌드하는 과정에서 오류가 발생했다. 에러 코드 could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.x.x. 해결 방법 어쩔 수 없이 Java17 이하의 버전을 사용해야만 하는 경우에는 Spring Boot 버전을 다운그레이드하면 된다. 하지만 이번 프로젝트에서는 Java17을 사용할 것이기 때문에 다른 방법이 필요했다. 1. Java 버전 확인 cmd 창을 열어 자바 버전을 확인해본다. > java -ve.. 🛠️Backend/오류해결 2023. 12. 19. [AWS] putty로 AWS 인스턴스 연결 시 Connection timed out 네트워크 에러 에러 상황 오랜만에 Spring Boot 교재를 공부하며 putty를 이용해서 AWS 인스턴스에 접속하려는 중 에러가 발생했다. 에러 알림 Network error: Connection timed out 해결 방법 https://www.partitionwizard.com/partitionmanager/putty-connection-timed-out.html [Solved] PuTTY Fatal Error: Network Connection Timed Out - MiniTool Partition Wizard Are you getting the "Network Error: Connection timed out" error when using PuTTY? If you are, you come to the ri.. 🛠️Backend/오류해결 2023. 12. 8. [Spring Boot] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 13 EC2 서비스 시작하기 EC2란? AWS에서 제공하는 성능,용량 등을 유동적으로 사용할 수 있는 서버다. 보통 AWS에서 '리눅스 서버 혹은 윈도우 서버를 사용합니다'라고 하면 EC2를 이야기하는 것이다. EC2란 이름은 Elastic Compute Cloud에서 C가 2개 있어서 C2라는 이름이 붙었다. AWS에서는 대부분 첫 글자가 중복되면 숫자로 표기한다. 비슷한 예로 AWS의 S3는 Simple Storage Service를 줄여 S가 3개라고 하여 S3이다. AWS에서 무료로 제공하는 프리티어 플랜에서는 EC2 사용에 아래와 같은 제한이 있다. 사양이 t2.micro만 가능하다. vCPU(가상 CPU) 1 Core, 메모리 1GB 사양이다. 보통 vCPU는 물리 CPU 사양의 절반 정도의 성능을.. 🛠️Backend/Spring 2023. 6. 17. [Spring Boot] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 12 AWS 회원가입 및 EC2 서버 설정 AWS(Amajon Web Service)라는 클라우드 서비스를 이용해 본격적으로 서버 배포를 진행하겠다. 외부에서 본인이 만든 서비스에 접근하려면 24시간 작동하는 서버가 필수이다. 24시간 작동하는 서버에는 3가지 선택지가 있다. 집에 PC를 24시간 구동시킨다. 호스팅 서비스(Cafe 24, 코리아 호스팅 등)을 이용한다. 클라우드 서비스(AWS, AZURE, GCP 등)을 이용한다. 일반적으로 비용은 호스팅 서비스나 집 PC를 이용하는 것이 저렴하다. 만약 특정 시간에만 트래픽이 몰린다면 유동적으로 사양을 늘릴 수 있는 클라우드가 유리하다. 클라우드란? 단순히 물리 장비를 대여하는 것이 아니고, 쉽게 말하면 인터넷(클라우드)을 통해 서버, 스토리지(파일 저장소.. 🛠️Backend/Spring 2023. 3. 19. [Spring Boot] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 11 어노테이션 기반으로 개선하기 같은 코드가 반복되는 부분은 일반적인 프로그래밍에서 개선이 필요한 나쁜 코드 중 하나이다. 같은 코드를 계속해서 복사 & 붙여넣기로 반복하게 만든다면 이후에 수정이 필요한 경우 모든 부분을 하나씩 찾아가며 수정해야만 한다. 이렇게 될 경우 유지보수성이 떨어질 수 밖에 없으며 혹시나 수정이 반영되지 않은 코드가 있다면 문제가 발생할 수 밖에 없다. 지금까지 작성한 코드 중에서 개선할만한 것은 무엇이 있을까? 책의 저자는 IndexController에서 세션값을 찾아오는 아래의 코드라고 생각한다. SessionUser user = (SessionUser) httpSession.getAttribute("user"); index 메소드 외에 다른 Controller와 Method에서.. 🛠️Backend/Spring 2023. 1. 21. [Spring Boot] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 10 Application-oauth 등록 이전에 만들었던 application.properties가 있는 src/main/resources/ 디렉토리에 application-oauth.properties 파일을 생성한다. 생성한 파일에 아래와 클라이언트 ID와 클라이언트 보안 비밀코드를 아래와 같이 등록한다. spring.security.oauth2.client.registration.google.client-id=클라이언트 ID spring.security.oauth2.client.registration.google.client-secret=클라이언트 보안 비밀 코드 spring.security.oauth2.client.registration.google.scope=profile,email scope=pr.. 🛠️Backend/Spring 2023. 1. 20. [Spring Boot] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 09 스프링 시큐리티 (Spring Security) 막강한 인증(Authentication)과 인가(Authorization) 기능을 가진 Framework이다. 스프링 기반의 애플리케이션에서 보안을 위한 표준이다. 인터셉터, 필터 기반의 보안 기능을 구현하는 것보다 스프링 시큐리티를 통해 구현하는 것을 적극적으로 권장한다. 스프링의 대부분 프로젝트들(Mvc, Data, Batch 등)처럼 확장성을 고려한 프레임워크다 보니 다양한 요구사항을 손쉽게 추가하고 변경할 수 있다. 이런 손쉬운 설정은 특히나 스프링 부트 1.5에서 2.0으로 넘어가면서 더욱 강력해졌다. 스프링 시큐리티와 스프링 시큐리티 OAuth2 클라이언트 많은 서비스에서 로그인 기능을 id/password 방식보다는 구글, 카카오, 네이버 로그.. 🛠️Backend/Spring 2023. 1. 18. [Spring Boot] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 08 전체 조회 화면 만들기 1. index.mustache UI 변경 우선 index.mustache 파일의 코드에 아래와 같이 추가해준다. {{>layout/header}} 스프링 부트로 시작하는 웹 서비스 Ver.2 글 등록 게시글번호 제목 작성자 최종수정일 {{#posts}} {{id}} {{title}} {{author}} {{modifiedDate}} {{/posts}} {{>layout/footer}} 추가된 부분에서 Mustache의 문법이 처음으로 사용된다. {{#posts}} {{/posts}} posts라는 List를 가져온다 Java의 for문과 동일하게 생각하면 된다. {{변수명}} List에서 뽑아낸 객체의 필드를 사용한다. 2. PostsRepository, PostsService,.. 🛠️Backend/Spring 2023. 1. 8. 이전 1 2 3 다음