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
login이 필요한 페이지에서 login.jsp 화면을 보여 줬을 시 다시 그 페이지로 돌아가게 처리
> class path
- src를 가리키는 말
classpath: // filepath:/src/main/
> file path
- project를 기준
filepath:
- 사용 빈도가 드물다
커스텀 작성
export
- application.properties(외부 설정)는 compile 대상이 아님
- 프로그램 시작 시 불러오도록 설정되어 있음
- third-party 인증키, email 계정정보, database 정보, 파일 업로드 위치
> application.properties
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
> @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
> SSL
- 보낼때 암호화 받을 때 복호화 / 보안
- 인증서
> TLS
SimpleMailMessage
setTo
setCc : 참조
setSubject: 이름
setText: 내용