🖥️ Back

스프링 컨테이너에 어노테이션을 통해 빈을 등록하는 방법이 2가지이다.1. @Bean 어노테이션을 통한 빈 등록 (메소드 레벨)2. @Component 어노테이션을 통한 빈 등록 (클래스 레벨)@Repository, @Service, #Controller 등 어노테이션은 @Component이 이미 포함된다. 여기서 @Component를 통해 등록된 빈은 다른 곳에서 @Autowired를 사용해 의존성을 주입할 수 있다.@Componentpublic class A {}@Componentpublic class B { @Autowired private A a; // 컨테이너에서 A 타입의 빈을 찾아서 의존성을 주입한다. }} @Autowired를 통한 의조선 주입 방법은 3가지이다.생성자 주입,..
스프링이 제공하는 BindingResult를 이용하여 검증 오류 처리를 한다.BindingResult 파라미터는 @ModelAttribute 뒤에 와야한다.@PostMapping("/add")public String addItem(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { //검증 로직 if (!StringUtils.hasText(item.getItemName())) { bindingResult.addError(new FieldError("item", "itemName", item.getItemName(), false, null, nu..
원활한 유지보수를 위해 다양한 메시지는 messages.properites라는 파일을 만들어 관리한다. 해당 데이터의 key 값으로 불러서 사용하면 된다. 이때 파일명은 message가 아닌 messages이다.//messages.propertiesitem=상품item.id=상품 IDitem.itemName=상품명item.price=가격item.quantity=수량 더 나아가 나라별로 별도로 관리할 수 있다.언어를 선택할 때는  HTTP accept-language 헤더 값을 사용하거나 사용자가 선택하도록 하고, 쿠키로 처리하면 된다. 메시지 관리 기능을 사용하려면 스프링이 제공하는 MessageSource를 스프링 빈으로 등록하면 된다.이때 스프링 부트는 MessageSource를 자동으로 빈 등록해준..
타임리프를 사용해서 폼에서 체크박스, 라디오 버튼, 셀렉트 박스를 편하게 사용할 수 있다.  상품 종류 ENUM으로 생성public enum ItemType { BOOK("도서"), FOOD("음식"), ETC("기타"); private final String description; ItemType(String description) { this.description = description; }} 배송방식 클래스 생성/** * FAST 빠른 배송 * NORMAL 일반 배송 * SLOW 느린 배송 */@Data@AllArgsConstructorpublic class DeliveryCode { private String code; private Str..
타임리프가 제공하는 입력 폼 기능을 적용해서 프로젝트의 폼을 효율적으로 보내본다.th:object 커맨드 객체를 지정하기 앞서 해당 오브젝트 정보를 뷰 보낼 때 함께 넘겨줘야 한다.@GetMapping("/add")public String addForm(Model model) { model.addAttribute("item", new Item()); return "form/addForm";} th:object를 통해 에서 사용할 객체를 지정한다. 상품명 가격 수량  ${item.itemName}을 선택 변수식을 사용하여 *{itemName}으로 작성할 수 있다.th:fiel..
타임리프는 주로 HTML 태그에 th:*속성을 지정하는 방식으로 동작한다.th:*로 속성을 적용하면 기존 속성을 대체하거나 새로 만든다.//렌더링 전//렌더링 후
지구용사
'🖥️ Back' 카테고리의 글 목록 (17 Page)