@PostConstruct
@PostConstruct는 해당 빈이 초기화된 후 바로 실행되는 메서드에 사용하는 어노테이션입니다. 주로 초기화 작업을 수행하는 데 사용됩니다.
예제:
@Service
public class MyService {
@PostConstruct
public void init() {
// 초기화 작업
System.out.println("MyService가 초기화되었습니다.");
}
}
@RestController와 HttpSession
@RestController는 RESTful 웹 서비스를 구현하는 컨트롤러임을 나타내는 어노테이션입니다. @RequestMapping을 사용하여 특정 URL 경로에 대한 요청을 매핑할 수 있습니다.
로그인 예제:
@RestController
@RequestMapping("/api/account")
public class AccountApiController {
@PostMapping("/login")
public void login(
@RequestBody LoginRequest loginRequest,
HttpSession httpSession
) {
var id = loginRequest.getId();
var pw = loginRequest.getPassword();
var optionalUser = userRepository.findByName(id);
if(optionalUser.isPresent()) {
var userDto = optionalUser.get();
if(userDto.getPassword().equals(pw)) {
httpSession.setAttribute("USER", userDto); // 세션에 사용자 정보 저장
} else {
throw new RuntimeException("Password Not found");
}
} else {
throw new RuntimeException("User Not Found");
}
}
}
설명
- @PostConstruct
- 빈이 초기화된 후 실행됩니다.
- 주로 초기화 로직을 작성하는 데 사용됩니다.
- @RestController
- RESTful 웹 서비스를 작성하기 위해 사용됩니다.
- @RequestMapping으로 URL 경로를 매핑합니다.
- HttpSession
- Spring에서 자동으로 세션을 관리합니다.
- 로그인 과정에서 세션을 사용하여 사용자 정보를 저장합니다.
예제 코드 설명
- 서비스 클래스 초기화
- @Service로 서비스 클래스를 정의하고, @PostConstruct로 초기화 메서드를 작성합니다.
- 로그인 컨트롤러
- @RestController와 @RequestMapping으로 컨트롤러를 정의합니다.
- @PostMapping으로 로그인 엔드포인트를 정의합니다.
- HttpSession을 사용하여 로그인한 사용자의 정보를 세션에 저장합니다.
-
@RestController
@RequestMapping("/api/account")
public class AccountApiController {
@PostMapping("/login")
public void login(
@RequestBody LoginRequest loginRequest,
HttpSession httpSession
) {
var id = loginRequest.getId();
var pw = loginRequest.getPassword();
var optionalUser = userRepository.findByName(id);
if(optionalUser.isPresent()) {
var userDto = optionalUser.get();
if(userDto.getPassword().equals(pw)) {
httpSession.setAttribute("USER", userDto); // 세션에 사용자 정보 저장
} else {
throw new RuntimeException("Password Not found");
}
} else {
throw new RuntimeException("User Not Found");
}
}
}
이렇게 구현된 로그인 기능은 사용자 인증 후 세션에 사용자 정보를 저장하여 이후 요청에서도 해당 정보를 활용할 수 있게 합니다.
'JAVA > 자바 공부' 카테고리의 다른 글
멀티모듈 - config 설정 - swagger 사용 (0) | 2024.06.25 |
---|---|
자바 DB 1:N 관계 어노테이션 적용법 2024-06-23 (0) | 2024.06.23 |
자바 Filter 2024-06-23 (0) | 2024.06.23 |