가수면
어노테이션 정리 본문
-스테레오 어노테이션-
@Component 대신 사용해 코드 명확성을 강화할 수 있음
@Service
클래스에 비즈니스 로직이 있음
@Controller
웹 컨트롤러일 경우
@Repository
Bean이 데이터베이스와 통신해 데이터를 저장하거나 검색하거나 조작하는 경우 사용
@RestController
REST API 컨트롤러일 경우
-기타 어노테이션-
@Primary
중복된 Bean에 우선권
@Qualifier
Primary보다도 우선권. 조건문처럼 사용하는 듯
@Lazy
사용될 때여야 초기화됨. 레이지 로딩같은 거
@Scope(~~프로토타입)
Bean을 요청할 때마다 새로운 인스턴스 생성
@PostConstruct
useEffect 역할
@PreDestroy
useEffect의 클린업 역할
@Named
CDI 어노테이션으로 @Component 역할
@Inject
CDI 어노테이션으로 @Autowired역할
@RequestMapping("url이름 지정")
url로 요청을 보냄
@RequestMapping(value="add-todo", method = RequestMethod.GET) // value 대신 path 써도 됨
public String showNewTodoPage(ModelMap model) {
}
@RequestMapping(value="add-todo", method = RequestMethod.POST)
public String addNewTodo(ModelMap model, @Valid Todo todo, BindingResult result) {
}
@GetMapping(path = "url이름 지정")
@RequestMapping이 get요청일 경우 사용 가능
@ResponseBody
return한 것을 그대로 브라우저로 전송되도록 함 (문자열 등)
@SessionAttributes("속성 이름")
세션 저장.저장되는 곳과 사용할 곳 모두 적어줘야 함
@RequestParam vs @PathVariable
@RequestParam - 쿼리 스트링 추출
@PathVariable - url 경로(params) 추출
@RequestMapping(value="add-todo", method = RequestMethod.POST)
public String addNewTodo(@RequestParam String description, ModelMap model) {
String username = (String)model.get("name");
todoService.addTodo(username, description, LocalDate.now().plusYears(1), false);
return "redirect:list-todos";
}
@GetMapping(path = "/hello-world/path-variable/{name}")
public HelloWorldBean helloWorldPathVariable(@PathVariable String name) {
return new HelloWorldBean(String.format("Hello World, %s", name));
}
@ControllerAdvice
예외 처리(exception handler)하는 클래스에 사용되는 어노테이션
@JsonProperty("필드이름")
필드 이름 커스텀하는 어노테이션
model에서 변수 지정할 때 같이 하면 된다.
'Java' 카테고리의 다른 글
JSTL (0) | 2023.12.12 |
---|---|
JSP (0) | 2023.12.02 |
H2, JDBC, JPA, Hibernate (2) | 2023.12.02 |
[Spring Boot] 기본 (0) | 2023.12.01 |
[Spring] 심화 (0) | 2023.11.30 |