Spring Framework/Spring boot #3: 11개의 글
HikariCP hikariCP는 스프링 부트 2.0부터 default JDBC connection pool이다. hikariCP github사이트에 가보면 엄청 빠르고, 가볍고, 신뢰할 수 있다고 설명한다. 심지어 "zero-overhead"라며 엄청나게 높은 성능을 강조하고 벤치마크 결과도 보여준다. 원하면 벤치마크 테스트 소스도 가져가서 직접 돌려보라고도 하는데 자세한건 모르겠고 나만의 테스트 환경을 만들어서 테스트 해보기로 했다. 스프링 부트에서 hikariCP 성능 테스트 PC 사양도 중요하고 인터넷 사양도 중요하고 로컬 DB냐 원격 DB냐도 갈리고 여러 환경이 중요한 것으로 아는데 크게 생각 안하고 단순히 직접 경험해본다에 중점을 두었다. 먼저 hikariCP는 스프링부트 2.0부터 defau..
회원가입 환경을 구현할때 여러가지로 고려해야할 사항이 많다. 예들들어, 비밀번호의 최소 갯수, 닉네임의 최수 글자수, email과 닉네임의 중복체크 등등이 있다. Controller에서 회원가입 진행 시 유효성 검사하기@Vaild 어노테이션을 설정하면, SignUpForm에 설정한 어노테이션들을 바탕으로 유효성 검사를 진행한다. errors.hasErrors() 유효성 검사를 바탕으로 위배되는 사항이 있는경우 에러가 검출되어 다시 회원가입 창으로 이동하게 된다. 유효성 검사 이후, 중복검사를 진행한다. @PostMapping("/sign-up") public String signUpSubmit(@Valid SignUpForm signUpForm, Errors errors){ if(errors.hasErr..
회원가입 또는 가입 후 휴대폰인증 구현을 위한 API 'coolSMS' 사용방법 : 다날과같은 서비스를 이용하여 문자인증을 구현하기위해서는 실제로 업체와 계약을 통해 진행해야하기때문에 학부 프로젝트에서는 적용할수가 없다. 그래서 비슷하게 흉내내기위해 coolSMS라는 문자메시지 전송 API를 이용해서 구현해보았다. 1. coolSMS 사용 준비 - coolsms 회원가입 하기 - coolsms 개발자센터에 접속합니다. 쿨에스엠에스 - 우주에서 가장 빠르고 안정적이고 쉬운 문자메시지(SMS) 서비스를 제공합니다. 알림톡, 문자메시지를 쉽고 빠르게 전달해 드립니다. developer.coolsms.co.kr -JAVA 클릭 coolsms 사용준비 -아래 화면에 보이는 step1과 step2를 차례대로 실행 ..
[스프링 부트/MVC] 정적 리소스(Static Resources) 기본 설정과 커스텀 방법 스프링 부트는 정적 리소스(static resources)에 대한 기본 매핑 설정과 커스텀을 지원한다. 실제로 확인해보자. 스프링 부트 프로젝트의 src/main/resources/static/에 hello.html을 새로 만든다. Hello Static Resource 정적 리소스는 어플리케이션을 재기동하지 않고 빌드하는 것 만으로 변경사항을 확인할 수 있다. 프로젝트 빌드 후 http://localhost:8080/hello.html로 요청해보자. 정적 리소스 매핑 URL 패턴 기본적으로 /**(루트) 부터 매핑된다. 따라서 위 예처럼 http://127.0.0.1:8080/hello.html을 요청하면 정적..
스프링 부트에서 즉시 웹 개발을 시작할 수 있는 이유 - AutoConfiguration spring-boot-starter-web 의존성을 추가하여 스프링 부트 프로젝트를 만들기만 하면 즉시 웹 어플리케이션 개발이 가능하다. @RestController public class UserController { @GetMapping("/hello") public String hello() { return "hello"; } } 아무런 설정 없이 컨트롤러를 만들어 GET /hello 요청에 대한 핸들러를 구현하여 메인 어플리케이션(@SpringBootApplication)을 실행하면 해당 요청을 처리하는 웹 어플리케이션이 동작한다. 스프링 부트의 기본 설정 이는 스프링 부트가 제공하는 기본 설정때문에 가능한 ..
Spring Boot + MyBatis 설정 방법(HikariCP, H2) 📝 순서 1. 스프링 부트 프로젝트 생성 2. 초기화 스크립트 설정(schema.sql, data.sql) 3. DBCP/DataSource 설정(HikariCP) 4. MyBatis 설정(@MapperScan, XML 위치, CamelCase, Alias, 로그레벨) 5. Model, Mapper 생성 6. 테스트 1. 스프링 부트 프로젝트 생성 MyBatis를 이용한 DB 연동을 위한 새 스프링 부트 프로젝트를 생성한다. 스프링 부트 프로젝트는 IDE를 이용하던지, spring initializr(start.spring.io)를 이용해 생성할 수 있다. 자바는 8로, 의존성은 Spring Web, Spring Data JDBC..
[Spring Boot/Spring Web MVC] ViewController를 이용해서 뷰 매핑하기 @GetMapping("/hello") public String hello() { return "hello"; } 위와 같이 특정 요청 url에 대해 컨트롤러 로직 없이 바로 뷰를 리턴하는 경우 ViewController를 사용해서 뷰를 매핑할 수 있다. @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/hello").setViewName("hell..
[Spring Boot] ApplicationRunner 등록 방법 정리 1. 별도의 클래스에 @Component 붙여서 등록하기 import org.springframework.boot.ApplicationArguments; import org.springframework.stereotype.Component; @Component public class ApplicationRunner implements org.springframework.boot.ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { // 코드 작성 } } 2. @Configuration 클래스에 @Bean으로 직접 등록하기 ..
스프링 부트 테스트 - 내장 서버 랜덤 포트로 띄우기 👉 Dependency spring-boot 2.2.5.RELEASE junit 4.12 @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class WebtoonApiControllerTest { @LocalServerPort private int port; @Test public void printPort() throws Exception { System.out.println(port); assertNotEquals(port, 0); } @Autowired private TestRestTemplate..
스프링 부트의 의존성 관리(Dependency Management) 기본적인 스프링 부트 프로젝트의 pom.xml 파일을 보면 의존성 설정이 spring-boot-starter-web과 spring-boot-starter-test 두 개 뿐이고 버전 또한 명시하지 않고 있지만 수 많은 라이브러리들을 알아서 가져온다. org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine 이것이 가능한 이유는 스프링 부트가 제공하는 의존성 관리 기능 때문이다. 기본 스프링 부트 프로젝트는 spring-boot-starter-..