Day37

두윤기·2023년 2월 20일
0

Exception

HTTP Exception

  • 4xx, 5xx
    • 404 not found
    • 500 internal server error
  • HTTP Exception != Java Exception
  • Spring Boot에서는 모두 Java Exception으로 처리
  • 추가 설정 필요

@ControllerAdivce


## custom Exception

404 not found

  • 홈페이지 일관성 저하
  • template(Exception 대처) 사용 불가
    4XX - 대응할 Controller X, NoHandlerException
    5XX - 대응할 Controller 있으나 logic 실행 중 error

제어반전

코드 레벨에서 조절 -> 설정에서 조절

403

403번 대신 사용할 예외 class

  • response.sendError(403) 대신
  • throw new RequireAuthorityException() 사용
  • 이렇게 해야 @ControllerAdvice에서 처리 가능
  • 예외 class가 되려면 Exception 상속받아야 함
  • RuntimeException을 상속받으면 따로 예외 전가를 하지 않아도 됨(checking Exception)

401,403,404는 처리 해주어야함

화면만 바꿔치기 forward
새로운 요청을 재생성 redirect

Spring security

header.refer

login이 필요한 페이지에서 login.jsp 화면을 보여 줬을 시 다시 그 페이지로 돌아가게 처리

> class path

  • src를 가리키는 말
  • classpath: // filepath:/src/main/

> file path

  • project를 기준
  • filepath:
  • 사용 빈도가 드물다


커스텀 작성

export

  • application.properties(외부 설정)는 compile 대상이 아님
  • 프로그램 시작 시 불러오도록 설정되어 있음
  • third-party 인증키, email 계정정보, database 정보, 파일 업로드 위치

> application.properties

  • boot 방식

application.properties에 variable 저장

academy.name=KH
academy.location=Korea
academy.since=1998

Properties Class

  • application.properties에서 value 추출해 올 class 생성
  @Data
  @Component
  @ConfigurationProperties(prefix = "academy")
  public class AcademyProperties {
    private String name;
    private String location;
    private int since;
  }

configuration-processor(Dependency) 추가

  • spring-boot-configuration-processor dependency 추가
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
  </dependency>

> env file

  • legacy 방식

> @Postconstruct

  • dependency injection(의존성 주입) 실행하는 method
  • 다른 resource에서 호출되지 않는다 해도 수행

장점

  • Constructor가 호출 되었을 때, bean은 초기화가 되지 않는다.(Dependency injection X)
  • @Postconstructor를 사용하여 dependency injection 후 실행을 보장(application이 실행 될 때 한 번만 실행)


> @Bean

  • 개발자가 직접 제어가 불가능한 외부 library 등을 Bean으로 만들려할 때 사용
  @Bean
  public JavamailSenderImpl sender(){
    JavaMailSenderImpl sender = new JavaMailSenderImpl();
    // ~~~
    return sender;
  }

Spring Container(IoC Container)

  • Instance의 생명 주기 관리
  • Instance 들에게 추가 기능 제공
  • 개발자가 작성한 코드의 처리과정을 위임받은 독립적인 존재
  • Spring Container에 생성되는 Object를 Bean이라고 한다.

Bean

  • Spring IoC Container가 관리하는 Java Object



Email 발송

  • HTTP가 아닌 다른 방식으로 통신(SMTP-Simple Mail Transfer Protocol)
  • 자체적으로 E-mail을 보내고 싶다면 SMTP 처리가 가능한 server 구축
    • server 구축이 쉽지 않고
    • 보내도 spem 처리됨
      -> 3rd party(외부서버) 사용
  • apache james
    • email 주소 구축

> SSL

  • 보낼때 암호화 받을 때 복호화 / 보안
  • 인증서

> TLS

  • SSL V3 이후
  • 1.2

SimpleMailMessage

setTo
setCc : 참조
setSubject: 이름
setText: 내용

profile
programmerD

0개의 댓글

관련 채용 정보