본문 바로가기
반응형

IT/Java318

swagger-ui 사용법 스웨거란 RESTAPI 개발시 문서를 자동으로 만들어주는 프레임워크이다. 대부분 API 를 Request 날릴때 사용을 하곤 한다. 저번에 다뤘던 내용인 postman을 사용해도 되고 이 swagger를 사용해도 좋다. postman 사용은 아래 참고 포스팅을 확인해보면 된다. 자바 뿐 아니라 python이나 nodejs 에서도 사용은 가능하지만 자바 스프링에서 사용할수 있는 좋은 기능이기에 자바 카테고리로 분류를 하였다. 사용을 하려면 먼저 라이브러리를 추가해야한다. maven 경우 gradle 경우 그리고 자바 소스로 와서 swaggerconfig 파일을 생성해준다. 기존에는 여기서 되었는데 좀더 확인을 해보니 configuration 파일에 추가 설정을 해줘야했다. 그래서 변경된 코드는 아래와 같다.. 2022. 6. 30.
ROOT CONTEXT 스프링을 사용하여 controller 에서 url 을 파싱하게 될때 @PostMapping("/test-controller") 이렇게 지정을 할 경우에 기본적으로는 127.0.0.1:8080/test-controller 라고 된다. (localhost, tomcat8080 기준) 근데 만약 MSA를 사용하거나 또는 다양하게 다른 패키지를 사용할 경우 이름이 겹칠수도 있어서 대분류를 설정 해줘야한다. 그럴 경우엔 properties에서 WebProject Settings에서 Context root 를 지정해줄수 있다. 이렇게 될 경우엔 URI의 최 상단 앞에 지정해준 값이 설정이 되어 127.0.0.1:8080/mvc/test-controller 경로로 되게 된다. 2022. 6. 28.
스프링 스케줄러(@Scheduled) 반복적인 작업을 하기 위해서 다양한 방법들이 있다. 리눅스 상에서의 crontab이나 코드내부라면 while문과 sleep 를 합쳐서 만들수도 있을것이고 방법은 다양하겠지만 이번 포스팅에서는 스프링에서 crontab을 내장하여 사용하는것과 비슷한 스프링 스케줄러에 대해서 소개를 해볼것이다. 사용을 하기 위해서는 스키마를 먼저 등록하고 하단에 task:annotation-drive 태그를 입력한다. 그리고 메서드에 어노테이션을 설정한다. 방식은 다양하다. fixed방식 @Scheduled(fixedDelay=1000) public void test(){ System.out.println("스케줄러입니다."); } fixedDelay 의 어노테이션 옵션의 1000은 ms단위이고 종료된 시간부터 이 시간이 지.. 2022. 5. 4.
빌드 관리도구 Maven / Gradle Spring 을 사용하게 되면 프로젝트 생성시 빌드 도구를 maven이나 gradle 중에 하나를 선택하게 된다. 나의 경험으로는 안드로이드 앱을 관리할때는 gradle을 주로 사용해왔고, 웹이나 스프링 등의 프로젝트를 관리할때는 maven을 주로 사용해왔다. 어떤걸 써야한다의 정답도 없고 뭐가 더 많이쓰이니 미래를 위해서 어떤걸 써야 도움이 된다의 그런 것도 없지만 사람마다, 기업마다, 프로젝트마다 maven과 gradle을 사용하는데 둘의 차이를 작성해보려고 포스팅을 작성하게 되었다. 우선 앞서 빌드 관리를 한다는 것에 대한 정의를 알아보도록 할것이다. 빌드 관리 도구 우리가 프로젝트에서 작성한 java 코드와 프로젝트 내에 필요한 기타 파일들을 WAS, JVM등에서 인식을 할수 있도록 패키징 하는 .. 2022. 5. 1.
스프링부트 동작 원리 스프링부트에 대한 설명은 아래 참고 사이트를 확인해보도록 한다. 이번 포스팅에서는 전체적인 설명보다는 스프링부트에서 동작하는 과정에 대해서 기술해볼것이다. 일단 내장 톰캣을 갖는 스프링부트는 jar파일로 배포를 하여 톰캣으로 실행할수가 있다. 서블릿컨테이너를 통해서요청을 받고 url 주소를 받으면 먼저 frontController 패턴으로 넘어간다. 이 패턴에서는 해당 요청에 알맞는 응답이 있는 코드로 값을 넘겨준다. 요청에 의한 값이 2번바뀌게 되는데 이때 요청한 값을 유지하기 위해서는 requestDispatcher를 사용하게 된다. requestDispatcher를 사용하여 요청과 응답을 그대로 유지 시키고 dispatcher로 인해서 생긴 수많은 객체들은 ApplicationContext에서 관리.. 2022. 4. 30.
equals 와 hashCode의 재정의를 같이 해야하는 이유 먼저 아래와 같이 클래스를 정의해두고 public class Person { private final String name; public Person(String name) { this.name = name; } // intellij Generate 기능 사용 @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; return Objects.equals(name, person.name); } } person클래스에서는 equals만 재정의를 하였고 이어서 생성을 해보았다. pub.. 2022. 4. 26.
com.microsoft.sqlserver.jdbc.SQLServerException: 드라이버가 SSL(Secure Sockets Layer) 암호화를 사용하여 SQL Sever로 보안 연결을 설정할 수 없습니다. 참고 포스팅을 보면 예전 포스팅에서 TLSv1, TLSv1.1 등 Sqlserver를 사용하기 위해 Java11 버전 이상일 경우엔 셋팅을 해줘야하는것이 있었다. 하지만 maven을 돌리다보니 이상하게 똑같은 에러가 또 발생 하였다. 그리고 다시한번 Java home 경로로 가서 java.security 파일을 봐도 셋팅한것이 잘 설정 되어있다. 한참을 삽질하다가 혹시 설마 이클립스에서 자바 경로를 다른 곳을 잡고 있나? 라는 생각이 들었고 /Application/eclise.app 안의 eclipse.ini파일을 보니 java 경로를 엉뚱한 eclipse.app안의 Eclipse/plugins/org,,,, 역시 이유는 있었다. 그럼 사건의 현장으로 가서 해당 위치의 java.security 를 확인해.. 2022. 4. 22.
Tomcat 서버에 springboot war파일 배포 Tomcat 폴더 안에 보면 다양한 폴더 들이 존재한다. 대표적으로 bin - 실행, 설치, 종료 등을 위한 폴더 conf - 설정 파일에 대한 폴더 log - 로그파일 폴더 lib - 라이브러리 폴더 temp - 임시파일 폴더 webapps - document 경로 폴더 등이 있다. 간단한 인터프린터 언어로 된 파일이나 스크립트 등은 webapps 폴더에 root폴더 안에 넣으면 http://ip:port/파일명 이런 식으로 브라우저에서 볼수가 있다. Spring 프로젝트를 통해서 배포를 하려면 war파일이나 jar 파일 등으로 배포가 가능한데 포스팅에서는 war 파일을 배포하는 방법에 대해서 작성해볼것이다. 먼저 pom.xml파일에 추가하도록 한다. 톰캣 의존성 추가 org.springframewor.. 2022. 4. 20.
JPA 복합키 사용법 저번 포스팅에서 데이터베이스 키의 종류에 대해서 알아봤고, 예전 포스팅에서 JPA에 대해서 다뤄보았다. JPA는 ORM 기술을 사용하여 mybatis처럼 쿼리를 짜는것이 아니라 코딩으로 구현을 하는 기술인데 저번 예시에서는 단 한개의 PK를 가지는 경우에서만 예시를 들었는데, 이번엔 여러 복합키에 대해서 구현을 할때 하는 방법에 대해서 포스팅 할것이다. 먼저 복합키와 JPA의 예시가 궁금하면 아래 참고 포스팅을 확인해보도록 한다. 두가지의 방법이 있는데 개인적으로는 IdClass구현하여 사용하는것이 쉬워서 해당 방법을 다뤄볼것이다. 먼저 일반적으로 만들어둔 엔티티에서 annotation을 하나 더 추가해준다. @IdClass(key.class) 그리고 복합키로 묶일 컬럼들에 @Id라는 annotation.. 2022. 4. 2.
반응형