본문 바로가기

전체 글

(156)
[Spring] 예외처리 Exception Handling in Spring MVC(원문소스: HTTPS://SPRING.IO/BLOG/2013/11/01/EXCEPTION-HANDLING-IN-SPRING-MVC)Spring MVC는 예외처리를 위한 몇가지 훌륭한 접근법을 제공해주지만 Spring MVC를 가르칠때 학생들이 종종 헷갈려하거나 불편해한다는 것을 알았다.이 글에서 이를 위해 사용가능한 다양한 옵션을 보여줄 것이다. 우리의 목표는 가능한한 컨트롤러 메소드에서 명시적으로 예외처리를 하지 않는 것이다. 이들의 횡단관심사cross-cutting concern는 전용코드에서 별도로 처리하는 더 나은 방식을 제공해준다.3가지 옵션이 있다: 예외별, 컨트롤러별, 전역별 per exception, per controller or..
[SpringBoot] 프로퍼티 이용하기 스프링부트가 자동으로 구성하는 빈들은 세부적인 부분을 조정할 수 있도록 300개가 넘는프로퍼티를 제공한다. 프로퍼티를 살펴보기 전에 먼저 아주 간단한 예제를 하나 살펴보자.애플리케이션을 실행할 때 스프링부트가 아스키아트 배너를 띄우는 것을 본 적이 있을 것이다.이 배너를 숨기고 싶다면 다음과 같이 지정해주면 된다. application.properties 파일을 생성하는 방법spring.main.show-banner=falseapplication.yml로 YAML파일을 생성하는 방법spring:main:show-banner: false※ 이 때, 들여쓰기를 안해주면 에러가 발생하는 것에 주의하자! 위의 방법말고도 스프링 부트 애플리케이션에 프로퍼티를 설정하는 방법은 여러가지다. 자동 구성 미세하게 조정앞..
[SpringBoot] 스타터 의존성 사용하기 스프링부트는 복잡한 프로젝트 의존성을 '스타터(Starter)' 의존성 수십 개로 해결한다.그저 프로젝트에 필요한 기능들을 빌드에 선언을 하기만 하면, 그에 필요한 개별 라이브러리들을자동으로 추가해준다. 스타터 의존성을 사용안한다고 생각해보자. 그렇다면 스타터 의존성의 장점을 바로 알 수 있을 것이다.스프링 부트 없이 빌드하려면 어떤 의존성을 추가해야 할까? 스프링 MVC를 지원하려면 어떤의존성들이 필요할까? 어떤 버전을 사용해야 잘 호환이 될까? 이렇듯 이미 코드 첫줄을 작성하기도 전에 빌드 명세에 어떤 것을 추가하여 기능을 만들어야 할지많은 고민해야 한다. 이러한 많은 고민 끝에 그레이들 빌드 명세에 다음 의존성을 추가했다고 가정해보자.compile('org.springframework:spring-..
포트 사용중인 프로세스 죽이기 서버가 내렸는데 8080포트가 사용중이라고 나오면 아래 명령어로 찾아볼 수 있다. lsof -i tcp:8080 그리고 아래 명령어로 죽일 수 있다. kill $(lsof -t -i:8080) ※ 출처: http://didadico.tistory.com/entry/Mac에서-8080포트-사용중인-프로세스-찾기 [Different days, different colors]
Sleep Process 죽이기 MySQL 프로세스 리스트 보기에는 다음의 두가지 방법을 사용 [aokio]$ mysqladmin processlist mysql> show processlist; +---------+------+-----------+-------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +---------+------+-----------+-------+---------+------+-------+------------------+ | 1602724 | root | localhost | test | Sleep | 70 | | NULL | | 1603286 | root | loc..
[JPA] 특정 칼럼을 제외하고 INSERT, UPDATE하는 방법 보통 JPA는 SAVE시에 모든 칼럼을 INSERT한다.그럴 경우, NOT NULL로 설정된 칼럼은 기본값으로 삽입되는것이 아닌 NULL로 삽입을 시도한다.이로 인해 에러가 발생하는데, 이럴 경우에 아예 쿼리에서 빼버려서 실행이 안되게 만들 수 있다.쿼리에서 제외된 칼럼은 DB에 지정된 default값으로 삽입이 된다. 특정 칼럼을 제외하고 save하는 방법은 다음과 같다.@Column(insertable=false, updatable=false)private String defaultField;
[SpringBoot] JPA 언더바 자동변경 방지 JPA와 MySQL을 연동해서 사용할 경우, 테이블이름이나 칼럼명을 언더바(_)가 아닌 대문자 형식(ex: MyTable)으로작성하는 경우가 있다. 이 경우에 Entity의 테이블 이름을 MyTable로 작성하면, Spring JPA에서 자동으로 my_table로 변경해버려서에러가 발생한다. 이때는 프로퍼티 설정에서 Naming Strategy를 아래와 같이 작성하여 언더바 자동 변경을 방지해주어야 한다.# 언더바 자동변경 방지 spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl spring.jpa.hibernate.naming.physical-strat..
[SpringBoot]프로퍼티 DB 설정 옵션 initialSize : 풀의 초기 커넥션 갯수maxActive : 최대 커넥션 갯수maxWait : 커넥션이 존재하지 않을 때, 커넥션을 얻기까지 대기하는 최대 대기시간maxIdle : Idle상태에 풀이 소유한 최대 커넥션 갯수testOnBorrow : 풀에서 커넥션을 가져올시 커넥션의 유효성 검사testOnReturn : 풀에 커넥션을 리턴할 때 커넥션의 유효성 검사validationQuery : validate QuerytestWhileIdle : Idle상태에 커넥션의 유효성 검사timeBetweenEvictionRunsMillis : 설정된 주기를 통해 Evict(유효하지 않는 커넥션/정의된 시간이 만료된 커넥션을 풀에서 제거) 쓰레드를 수행minEvictableIdleTimeMiilis : ..