@ControllerAdvice 정리

스프링의 컨트롤러 예외 전역 처리에 대한 방법.

안돌려보고 md에 직접 작성했다…!

예제 1

@ControllerAdvice
public class AdviceClassName() {
  
  @ExceptionHandler(xxxxException.class)
  public void handleXXX(Exception e) {
    e.getMessage();
  }
  
  // HTTP Status Code가 404로 리턴된다.
  @ExceptionHandler(xxxxException.class)
  @ResponseStatus(HttpStatus.NOT_FOUND, reason="전달하고싶은 에러메시지 입력")
  public void handleXXX(Exception e) {
    e.getMessage();
  }
  
  // 직접 Response를 설정할 수 있다.
  @ExceptionHandler(xxxxException.class)
  public ResponseEntity handleXXX(Exception e) {
    return new ResponseEntity("찾을 수 없다! 하지만 Status Code는 200을 리턴한다!", HttpStatus.OK);  // 에러가 났지만 200을 리턴하는! 이런 작업도 가능하다
  }
  
  // 여러개의 Exception을 받기
  @ExceptionHandler({xxxxException.class, secondException.class})
  public String handleXXX(Exception e) {
    return "실패!";
  }
}

TODO

참조

https://springboot.tistory.com/33
https://springboot.tistory.com/25
https://cnpnote.tistory.com/entry/SPRING-Spring-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC%EB%A1%9C-%EC%97%90%EB%9F%AC-404%EB%A5%BC-%EC%B2%98%EB%A6%AC%ED%95%9C%EB%8B%A4

TIL (뻘글)

19.06.17.

ssh와 sshd 둘의 쉬운 구분 방법은 ssh=outbound, sshd=inbound 설정이다.
리눅스 기술부채 해결을 위해 노력하자.

19.06.11.

아직도 리눅스 잘 못다룬다
명령어좀 익숙해지자
사용하는 명령어만 그냥 쓰지 말고!
최대한 많은 부분을 경험해보자.
그러기 위해 토이 프로젝트를 하자!

19.06.08.

하다보면,,,, 잘하겠지,,,
중간만 하자 욕심부리지 말고!
허접이 욕심부리면 오히려 마이너스가 된다.
침착하게 한줄 한줄 글을 읽고
당황하지 말고 논리적으로 생각해보자.
대부분의 원인은 나로부터 시작된다.

19. 05. 15. 수

시작하다.

19.04.29. 깃 블로그를 시작한다.

블로그를 시작해야지 라는 생각을 가진지 3년이 지난것 같다.

TODO

블로그의 목적

  1. 공부한 내용을 정리하고 다듬는다.
  2. 글쓰기에 익숙해진다.
  3. 나태한 마음가짐에 ‘주 1회 글쓰기’라는 강제성을 불어넣는다.
  4. 배민가고싶다

시작이 반이니 내일 추가해서 써야지 ?

는 2주가 지났다.

다시 시작 ㅎㅎ

첫번째 목표 매일 운동과 클린코드 다 읽기!

Here be a sample post with a custom background image. To utilize this “feature” just add the following YAML to a post’s front matter.

image:
  background: filename.png

This little bit of YAML makes the assumption that your background image asset is in the /images folder. If you place it somewhere else or are hotlinking from the web, just include the full http(s):// URL. Either way you should have a background image that is tiled.

If you want to set a background image for the entire site just add background: filename.png to your _config.yml and BOOM — background images on every page!

Background images from Subtle Patterns (Subtle Patterns) / CC BY-SA 3.0
Syntax Highlighting Post

Syntax highlighting is a feature that displays source code, in different colors and fonts according to the category of terms. This feature facilitates writing in a structured language such as a programming language or a markup language as both structures and syntax errors are visually distinct. Highlighting does not affect the meaning of the text itself; it is intended only for human readers.1

GFM Code Blocks

GitHub Flavored Markdown fenced code blocks are supported. To modify styling and highlight colors edit /_sass/syntax.scss.

#container {
  float: left;
  margin: 0 -240px 0 0;
  width: 100%;
}
.highlight {
  margin: 0;
  padding: 1em;
  font-family: $monospace;
  font-size: $type-size-7;
  line-height: 1.8;
}
<nav class="pagination" role="navigation">
  {% if page.previous %}
    <a href="{{ site.url }}{{ page.previous.url }}" class="btn" title="{{ page.previous.title }}">Previous article</a>
  {% endif %}
  {% if page.next %}
    <a href="{{ site.url }}{{ page.next.url }}" class="btn" title="{{ page.next.title }}">Next article</a>
  {% endif %}
</nav><!-- /.pagination -->
1
2
3
4
5
6
7
8
<nav class="pagination" role="navigation">
  {% if page.previous %}
    <a href="{{ site.url }}{{ page.previous.url }}" class="btn" title="{{ page.previous.title }}">Previous article</a>
  {% endif %}
  {% if page.next %}
    <a href="{{ site.url }}{{ page.next.url }}" class="btn" title="{{ page.next.title }}">Next article</a>
  {% endif %}
</nav><!-- /.pagination -->
module Jekyll
  class TagIndex < Page
    def initialize(site, base, dir, tag)
      @site = site
      @base = base
      @dir = dir
      @name = 'index.html'
      self.process(@name)
      self.read_yaml(File.join(base, '_layouts'), 'tag_index.html')
      self.data['tag'] = tag
      tag_title_prefix = site.config['tag_title_prefix'] || 'Tagged: '
      tag_title_suffix = site.config['tag_title_suffix'] || '&#8211;'
      self.data['title'] = "#{tag_title_prefix}#{tag}"
      self.data['description'] = "An archive of posts tagged #{tag}."
    end
  end
end

Code Blocks in Lists

Indentation matters. Be sure the indent of the code block aligns with the first non-space character after the list item marker (e.g., 1.). Usually this will mean indenting 3 spaces instead of 4.

  1. Do step 1.
  2. Now do this:

    def print_hi(name)
      puts "Hi, #{name}"
    end
    print_hi('Tom')
    #=> prints 'Hi, Tom' to STDOUT.
    
  3. Now you can do this.

GitHub Gist Embed

An example of a Gist embed below.