Spring API 개발시 예외(에러) 처리 방법을 메모합니다. 실제로 회사 등의 프로젝트에서 제가 선호하는 방식입니다.

 -  특정 케이스, 레거시의 하위호환성을 유지해야하는 경우는 어쩔수 없지만ㅠ (ex. 갑에서 에러도 200으로 응답해달라고 요청)


[참고 링크]

1. 트위터 : https://developer.twitter.com/en/docs/basics/response-codes

2. 카카오 : https://developers.kakao.com/docs/restapi/quick-reference#응답-코드

3. 기타

  - 어떤분이 내가 사용하는 방법과 유사하게 Spring 기반으로 정리해두신 링크입니다.

  - 다른점은, 저는 다른 개발자와 커뮤니케이션& 개발자가 정의서를 따로 보지 않도록 하기 위해서 에러코드를 숫자보다 문자로 처리하는걸 선호합니다.

  - https://cheese10yun.github.io/spring-guide-exception/#undefined



메모

 - Spring boot +JSP 사용시 제약이 조금있다. 그래서 가능하면 thymelef 등을 사용하는게 좋음

 - 개인적으로 주변 회사에서는 thymelef를 선호하는 편인듯.. 

 - 나는 Spring boot가 나오기 몇 년전에 FreeMarker를 한참썻는데 이제 쓸데가 없어짐.. 기억도 안나고..(지금 쓰고 있는 JSP도 가능하면 그만 쓰려고 노력 중)



본론으로 들어가서 spring boot 프로젝트의 방향성과 cloud 등에서 embedded servlet container를 선호할수 밖에 없는 제약 등으로 JSP는 이제 그만 사용해야할 듯 함(현재 AWS에서는 JSP를 따로 deploy하고 쓰고 있지만 좋은 방법은 아니고..)



참고


29.4.5 JSP Limitations(링크)

When running a Spring Boot application that uses an embedded servlet container (and is packaged as an executable archive), there are some limitations in the JSP support.

  • With Jetty and Tomcat, it should work if you use war packaging. An executable war will work when launched with java -jar, and will also be deployable to any standard container. JSPs are not supported when using an executable jar.
  • Undertow does not support JSPs.
  • Creating a custom error.jsp page does not override the default view for error handlingCustom error pages should be used instead.

There is a JSP sample so that you can see how to set things up.

https://ofbiz.apache.org/



Apache OFBiz is a suite of business applications flexible enough to be used across any industry. A common architecture allows developers to easily extend or enhance it to create custom features.



  1. 프로젝트 상단의 run 부분의 select box에서 Edit Configurations 선택


  2. Environment -> VM options


참고


Mysql full text 검색(전문 검색)

  1. Mysql  5.6 버전 이후에는 Inno db에도 full text 검색(인덱스 추가) 가능
  1. 주의
    1. 한국어 검색 특성상 보통은 '2글자'이상부터 검색되어야 하는데 mysql 기본 설정은 4글자이니 수정해야 함
      1. SHOW VARIABLES WHERE variable_name LIKE 'ft_m%'; 로 확인하면 4글자인데 최소 값을 2글자로 변경
      2. innodb를 사용하는 경우에는 innodb_ft_min_token_size 의 최소 값을 변경해야 함
    2. 복수개의 컬럼을 대상으로 full_text 검색을 진행시에는 해당 컬럼 모두가 포함된 full_text 인덱스가 필요
      1. 예) title과 content 2개 컬럼을 대상으로 full_text 검색을 실행하려면 2개 컬럼이 포함된 full_text 인덱스가 필요
        1. 쿼리 예) SELECT * FROM xe_documents WHERE MATCH(title, content) AGAINST('+답변 +조합' IN BOOLEAN MODE)

[사용 예]

테이블 생성
CREATE TABLE `tbl_full` (
  `key` int(10) unsigned NOT NULL COMMENT '식별값',
  `content` text COMMENT '내용',
  PRIMARY KEY (`key`),
  FULLTEXT KEY letter_content (letter_content)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='테이블';


실행 - 자연어 검색(keyword가 포함되어 있는 row를 찾음)
select * from tbl_full where match(content) against ('내용');

실행 - boolean mode 검색(keyword가 포함되어 있는 row를 찾고 추가적인 규칙 이용)
select * from tbl_full where match(content) against ('내용*' in boolean mode);
-- col like '내용%' 의 형태로 검색되지만 동일하지는 않음
-- "가나다라 내용마바" 검색가능
-- "가나다라내용마바" 검색불가능
ex) SELECT * FROM xe_documents WHERE MATCH(content) AGAINST('+답변 +조합' IN BOOLEAN MODE)

실행 - 쿼리 확장 검색(자연어 검색을 이용하여 데이터 셋을 만들어 다시 검색)
select * from tbl_full where match(content) against ('내용*' WITH QUERY EXPANSION);
-- col like '내용%' 의 형태로 검색되지만 동일하지는 않음
-- "가나다라 내용마바" 검색가능
-- "가나다라내용마바" 검색불가능


불린 검색시 사용 가능 키워드
연산자 없음: 정확하게 일치하는 단어 반환
> against(‘keyword1 keyword2’)
> 정확하게 keyword1 또는 keyword2 일치하는 row 검색
+ : keyword가 포함된 행 반환
> against(‘+keyword1 +keyword2’ in boolean mode)
> keyword1과 keyword2 포함한 row 검색
- : keyword가 포함된 행 제외
> against(‘+keyword1 -keyword2’ in boolean mode)
> keyword1은 포함하지만 keyword2 포함하지 않는 row 검색
* : keyword를 포함한 prefix 형태의 검색 가능
> against(‘keyword1*’ in boolean mode)
> keyword1은 포함(keyword1%)한 row 검색
<> : 값의 관계 비교, 해당하는 값 반환
“” : 해당 콤마 사이 keyword 반환
> “keyword1 keyword2” 는 찾지만 “keyword1 keyword3 keyword2”는 찾을수 없음


[개요]
  1. 가끔 오라클 사이트에서 JDK를 다운로드해서 리눅스 서버에 설치해야하는데 방법을 정리한 내용입니다.
  1. 사전 준비물 : fiddler 또는 크롬 개발자 도구


[방법]
  1. 오라클 사이트에 접속해서 다운로드할 버전 확인
  2. fiddler 또는 크롬 개발자도구를 실행해서 네트웤 캡쳐링
  3. JDK 다운로드 클릭
    1. 일반적으로 centos 64bit계열(회사들에서 많이쓰는)에서는 Linux x64의 tar.gz 버전 설치

  4. 다운로드 URL 확인 후 복사
    1. URL은 짧은시간(ex. 몇분동안)만 유효하니 그전에 wget 등으로 다운로드 함
      1. fiddler를 이용시

      2. 크롬 개발자 도구 이용시


  5. wget 커맨드 생성 후 다운로드 실행
#JDK8 다운로드 wget 커맨드 샘플(일정 시간동안만 URL은 유효함)
wget 'http://download.oracle.com/otn/java/jdk/8u211-b12/478a62b7d4e34b78b671c754eaaf38ab/jdk-8u211-linux-x64.tar.gz?AuthParam=1557104761_2911d9b711b8ff9b7fde6c8470286ce7' -O jdk-8u211-linux-x64.tar.gz


'JAVA > 툴 및 팁' 카테고리의 다른 글

sentry logback(java) 연동 방법  (0) 2021.01.12
pinpoint 설치 방법- 1.8.4 버전  (0) 2019.06.26
nexus 설치 및 셋팅  (0) 2019.03.22
pinpoint 설치 방법- 1.8.1 버전  (0) 2018.12.21
pinpoint 설치 방법 메모  (0) 2017.11.16

참고

 

 

Mysql full text 검색(전문 검색)

 

  1. Mysql  5.6 버전 이후에는 Inno db에도 full text 검색(인덱스 추가) 가능

  1. 주의

    1. 한국어 검색 특성상 보통은 '2글자'이상부터 검색되어야 하는데 mysql 기본 설정은 4글자이니 수정해야 함

      1. SHOW VARIABLES WHERE variable_name LIKE 'ft_m%'; 로 확인하면 4글자인데 최소 값을 2글자로 변경

    2. 복수개의 컬럼을 대상으로 full_text 검색을 진행시에는 해당 컬럼 모두가 포함된 full_text 인덱스가 필요

      1. 예) title과 content 2개 컬럼을 대상으로 full_text 검색을 실행하려면 2개 컬럼이 포함된 full_text 인덱스가 필요

        1. 쿼리 예) SELECT * FROM xe_documents WHERE MATCH(title, content) AGAINST('+답변 +조합' IN BOOLEAN MODE)

 

[사용 예]

 

테이블 생성

CREATE TABLE `tbl_full` (

  `key` int(10) unsigned NOT NULL COMMENT '식별값',

  `content` text COMMENT '내용',

  PRIMARY KEY (`key`),

  FULLTEXT KEY letter_content (letter_content)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='테이블';

 

 

실행 - 자연어 검색(keyword가 포함되어 있는 row를 찾음)

select * from tbl_full where match(content) against ('내용');

 

실행 - boolean mode 검색(keyword가 포함되어 있는 row를 찾고 추가적인 규칙 이용)

select * from tbl_full where match(content) against ('내용*' in boolean mode);

-- col like '내용%' 의 형태로 검색되지만 동일하지는 않음

-- "가나다라 내용마바" 검색가능

-- "가나다라내용마바" 검색불가능

ex) SELECT * FROM xe_documents WHERE MATCH(content) AGAINST('+답변 +조합' IN BOOLEAN MODE)

 

실행 - 쿼리 확장 검색(자연어 검색을 이용하여 데이터 셋을 만들어 다시 검색)

select * from tbl_full where match(content) against ('내용*' WITH QUERY EXPANSION);

-- col like '내용%' 의 형태로 검색되지만 동일하지는 않음

-- "가나다라 내용마바" 검색가능

-- "가나다라내용마바" 검색불가능

 

 

불린 검색시 사용 가능 키워드

연산자 없음: 정확하게 일치하는 단어 반환

> against(‘keyword1 keyword2’)

> 정확하게 keyword1 또는 keyword2 일치하는 row 검색

+ : keyword가 포함된 행 반환

> against(‘+keyword1 +keyword2’ in boolean mode)

> keyword1과 keyword2 포함한 row 검색

- : keyword가 포함된 행 제외

> against(‘+keyword1 -keyword2’ in boolean mode)

> keyword1은 포함하지만 keyword2 포함하지 않는 row 검색

* : keyword를 포함한 prefix 형태의 검색 가능

> against(‘keyword1*’ in boolean mode)

> keyword1은 포함(keyword1%)한 row 검색

<> : 값의 관계 비교, 해당하는 값 반환

“” : 해당 콤마 사이 keyword 반환

> “keyword1 keyword2” 는 찾지만 “keyword1 keyword3 keyword2”는 찾을수 없음

 

 

  1. 프로젝트 상단의 run 부분의 select box에서 Edit Configurations 선택

     

  2. Environment -> VM options

 

 

+ Recent posts