@Component("helloBean")
public class HelloBean {
public String hello(String data) {
return "Hello" + data;
}
}
@Controller // Controller 역할을 한다.
@RequestMapping("/basic") // /basic으로 들어오는 요청을 모두 처리한다.
public class BasicController {
@GetMapping("text-basic")
public String textBasic(Model model) {
model.addAttribute("data", "Hello Spring");
return "basic/text-basic";
}
요청 들어온 URI의 요청과 Annotation value 값이 일치하면 해당 클래스나 메소드가 실행된다.
Get방식이냐 Post 방식이냐에 따라 @GetMapping
, @PosrMapping
으로 사용할 수 있다.
위에 코드 참고
@PostMapping("/add")
public String saveItemV1(Model model, @RequestParam String itemName, @RequestParam int price, @RequestParam Integer quantity) {
Item item = new Item();
item.setItemName(itemName);
item.setPrice(price);
item.setQuantity(quantity);
itemRepository.save(item);
model.addAttribute("item", item);
return "basic/item";
}
이 역시 위와 같이 Lombok의 대표적인 Annotation으로 생성자 주입을 임의의 코드없이 자동으로 설정해주는 Annotation이다.
초기화 되지않은 final필드나 @NonNull이 붙은 필드에 대해 생성자를 생성해 준다.
새로운 필드를 추가할 때 다시 생성자를 만들어서 관리해야하는 번거로움을 없애준다.(@Autowired를 사용하지 않고 의존성 주입)
@Controller
@RequestMapping("/basic/items")
@RequiredArgsConstructor
public class BasicItemController {
private final ItemRepository itemRepository;
...
}
@Controller
@RequestMapping("/basic/items")
@RequiredArgsConstructor
public class BasicItemController {
private final ItemRepository itemRepository;
@Autowired
public BasicItemController(ItemRepository itemRepository) {
this.itemRepository = itemRepository;
}