@RestController
Restful Web API를 좀 더 쉽게 만들기 위해 스프링 프레임워크 4.0에 도입된 기능입니다.
@Controller와 @ResponseBody를 합쳐 놓은 어노테이션 입니다.
클래스 위에 @Controller어노테이션을 선언하면 해당 클래스를 요청을 처리하는 컨트롤러로 사용합니다.
@ResponseBody 어노테이션은 자바 객체를 HTTP 응답 본문의 객체로 변환해 클라이언트에게 전송합니다.
@GetMapping
컨트롤러 클래스에 @GetMapping 어노테이션을 이용해 클라이언트의 요청을 처리할 URL을 매핑합니다.
사용 예제
package com.shop;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springfromawork.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
public class SpringDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringDemoApplication .class, args);
}
@GetMapping(value="/")
public String HelloWorld(){
return "Hello World"
}
}
Lombok
Lombok 라이브러리는 반복적인 Getter/Setter, ToString과 같은 반복적인 자바 코드를 컴파일 할 때 자동으로 생성해 주는 라이브러리 입니다.
Lombok 라이브러리를 사용하면 반복적인 소스코드를 제거할 수 있으므로 코드를 좀 더 깔끔하게 작성할 수 있습니다.
사용 예제
package com.shop;
import lombok.Getter;
import lombok.Setter;
import lombok.ToStirng;
@Getter
@Setter
@ToString
public class UserDto{
private String name;
private Integer age;
}
UserDto 객체의 name, age의 값을 읽어 오거나, 값을 변경하기 위해서는 getter, setter라는 메소드가 필요합니다.
Lombok 라이브러리를 사용하면 해당 라이브러리를 자동으로 만들어 줍니다.
UserDto를 클라이언트에 요청 후 웹 브라우저에 띄우기 위해 TestController를 작성해야 합니다.
UserDto클래스에는 setAge( ), setName( ) 메소드가 없지만 컴파일 오류가 없이 정상적으로 작동합니다.
package com.shop;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController{
@GetMapping(value="/test")
public UserDto test(){
UserDto userDto=new UserDto();
userDto.setAge(22);
userDto.setName("yoon");
return userDto;
}
}
Spring Boot Devtools
애플리케이션 개발 시 유용한 기능들을 제공하는 모듈입니다.
대표적인 기능
- Automatic Restart: classpath에 있는 파일이 변경될 때마다 애플리케이션을 자동으로 재시작해줍니다. 개발자가 소스 수정 후 애플리케이션을 재실행하는 과정을 줄일 수 있고, 생산성을 향상시킬 수 있습니다.
- Live Road: 정적자원(html, js, css) 수정 시 새로 고침 없이 바로 적용할 수 있습니다.
- Property Defaults: Thymeleaf는 기본적으로 성능을 향상시키기 위해서 캐싱 기능을 사용합니다. 하지만 개발하는 과정에서 캐싱 기능을 사용한다면 수정한 소스가 제대로 반영되지 않을 수 있기 때문에 cache의 기본 값을 false로 설정합니다.
스프링 시큐리티
애플리케이션을 만들기 위해서는 보통 인증/인가 등의 보안이 필요합니다.
스프링 시큐리티는 스프링 기반의 애플리케이션을 위한 보안 솔류션을 제공합니다.
웹에서 인증이란 해당 리소스에 대해서 작업을 수행할 수 있는 주체인지 확인하는 것 입니다.
인가는 인증 과정 이후에 일어납니다.
커뮤니티를 관리하는 관리자 URL을 입력했을 때 해당 URL은 커뮤니티의 관리자만 접근할 수 있어야 합니다.
이때 접근 하는 사용자가 해당 URL에 대해서 인가된 회원인지를 검사하는 것 입니다.
인가된 유저라면 URL에 대한 권한이 있기 때문에 접근이 가능합니다.
UserDetailService
UserDetailService 인터페이스는 데이터베이스에서 회원 정보를 가져오는 역할을 담당
loadUserByUsername( )메소드가 존재하며, 회원 정보를 조회하여 사용자의 정보와 권한을 갖는 UserDetails 인터페이스를 반환
UserDetial
스프링 시큐리티에서 회원의 정보를 담기 위해서 사용하는 인터페이스는 UserDetails 입니다.
해당 인터페이스를 직접 구현하거나 스프링 시큐리티에서 제공하는 User 클래스를 사용합니다.
User 클래스는 UserDetails 인터페이스를 구현하고 있는 클래스 입니다.
'프레임워크 > Spring Boot' 카테고리의 다른 글
스프링 시큐리티(spring security) (0) | 2023.08.29 |
---|---|
타임리프: Thymeleaf (0) | 2023.08.29 |
[JSON]자바 직렬화와 역직렬화 (0) | 2023.08.29 |
[Spring Boot]Restful API (0) | 2023.08.29 |
스프링 부트란 (0) | 2023.08.26 |