본문 바로가기

분류 전체보기

@RequiredArgsConstructor vs @AllArgsConstructor @RequiredArgsConstructor는 다음과 같은 방식으로 생성자를 생성합니다.필드 선택:초기화되지 않은 final 필드선언 시 초기화되지 않은 @NonNull로 표시된 필드생성자 매개변수:위 조건에 해당하는 필드들만 매개변수로 가지는 생성자를 생성합니다.null 체크:@NonNull 로 표시된 필드에 대해 null 체크를 수행하며, null 값이 전달되면 NullPointerException을 발생시킵니다.매개변수 순서:생성자 매개변수의 순서는 클래스 내에서 필드가 선언된 순서를 따릅니다.   @AllArgsConstructor 는 다음과 같은 방식으로 생성자를 생성합니다.필드 선택:클래스의 모든 필드가 매개변수로 포함됩니다.null 체크:@NonNull로 표시된 필드에 대해 null 체크를 .. 더보기
<label for=""> 과 name 속성(Feat. HTML) 상품명  for 속성의 역할for="itemName"의 역할은 태그와 태그를 연결하는 것입니다.for 속성의 값은 연결하고자 하는 태그의 id 속성과 동일해야 합니다.이렇게 하면 사용자가 을 클릭했을 때, 해당하는 요소로 포커스가 자동으로 이동합니다.이는 사용자 경험을 향상시키고 접근성을 높이는 데 중요한 역할을 합니다.위 코드에서는: 태그의 for="itemName"은 태그의 id="itemName"와 연결됩니다.결과적으로, "상품명" 레이블을 클릭하면 "이름을 입력하세요"라는 입력 필드에 포커스가 이동합니다.이 기능은 특히 키보드나 화면 읽기 프로그램을 사용하는 사용자들에게 유용합니다. name 속성의 역할name="itemName"의 역할은 FORM 데이터를 서버로 전송.. 더보기
[타임리프와 스프링의 통합]의 진짜 의미! 타임리프의 메뉴얼 2가지 형태로 제공된다. 1] 타임리프만 사용할 경우의 메뉴얼2] 스프링과 통합할 경우의 메뉴얼그런데 Spring MVC 구조를 살펴보면 Spring이 제공하는 viewResolver를 통하여 자동으로 뷰 페이지 경로를 찾고, Spring이 제공하는 Model 객체를 통해서 뷰에서 데이터를 꺼내 쓸 수가 있는 것이다. 그럼 이것 또한 Spring과 이미 통합된상태에서 타임리프를 사용하고 있다고 말할 수 있는 것 아닌가??결론부터 말하면 타임리프가 사용된 뷰 페이지에 스프링이 Model 객체를 이용하여 단방향으로 데이터를 뿌려주기만 한다면 그건 타임리프와 스프링이 통합되었다고 할 수 없다. 그 반대로도 즉 타임리프를 통해 스프링 MVC로 데이터가 전송이 돼서 Spring이 제공하는 여러 .. 더보기
Map :: values() 사용 시 주의점(Feat. ConcurrentModificationException) package hello.itemservice.domain.item;import org.springframework.stereotype.Repository;import java.util.*;@Repositorypublic class ItemRepository { private static final Map store = new HashMap(); //static private static long sequence = 0L; //static public List findAll() { return new ArrayList(store.values()); }},   위 코드에서 store.values()를 new ArrayList(store.values())로.. 더보기
javascript는 서버에서 절대 실행되지 않음 자바 스크립트는 웹 브라우저에서 실행이 되는 언어이다. 고로, 서버 사이드에서 타임리프가 렌더링 될 때 같이 실행되지 않고, 위 뷰가 웹 브라우저에 전달이 되면 그때 웹 브라우저가 실행이 된다. (서버 사이드에서는 타임리프 부분만 렌더링이 된다) 더보기
타임리프 프로토타입 주석(Feat. 타임리프 주석) 타임리프 프로토타입 주석 : 파일을 직접 열람(서버 렌더링을 거치지 않고 웹브라우저로 열람)을 할 경우에는 해당 주석 안의 HTML 소스가 렌더링이 안 되지만, 서버에서 타임리프로 렌더링 됐을 때에만 주석 안의 HTML 코드가 보인다. 3. 타임리프 프로토타입 주석html data/*/-->   타임리프 주석 : 렌더링을 서버에서 거치지 않으면, 해당 주석이 그대로 보인다(타임리프는 "내추럴 템플릿"이라는 점을 기억하자). 그러나 서버 렌더링 작업을 거치면 해당 주석 부분이 사라진다. 더보기
checked(Feat.html,thymeleaf) - checked=false = HTML의 경우, type=checkedbox인 경우 chcked="false"로 설정을 해도 아래와 같이 무조건 체크가 돼 있다. 그러나 타임리프를 사용하면 설정을 마음대로 조종할 수가 있다. - checked o = - checked x = 더보기
static class에 @Component 사용 시 주의점! @Controllerpublic class BasicController { @Component("helloBean") // 이름을 지정하지 않으면, BasicController.helloBean으로 빈 이름이 자동 등록! static class HelloBean{ public String hello(String data){ return "Hello " + data; } } @GetMapping("/text-basic") public String textBasic(Model model) { model.addAttribute("data","Hello Spring!"); return "basic/text-ba.. 더보기