본문 바로가기
반응형

Back-End89

검증 처리 (Validation) Safe Navigation Operator "Object?." 문법은 Object가 null일경우 nullPointerException이 발생하는 대신, null을 반환하는 SpringEL 문법 BindingResult 스프링이 제공하는 검증오류를 보관하는 객체 바인딩할 model attribute가 있어야 하기 때문에 파라미터 순서가 무조건 @ModelAttribute가 먼저 와야함 @ModelAttribute에 데이터 바인딩 시 오류가 발생해도 컨트롤러가 호출됨 #fields BindingResult가 제공하는 검증 오류에 접근할 수 있다. FieldError FieldError는 두가지 생성자를 제공하는데 그 중 한가지 생성자에는 오류 필드를 담을 수 있다. FieldError 파라미터들 obje.. 2023. 8. 17.
메세지, 국제화 메세지 기능 다양한 메세지를 한곳에서 관리하도록 하는 기능 예) messages.properties 라는 메세지 관리용 파일을 만든 후 item=상품 item.id=상품 ID item.itemName=상품명 item.price=가격 item.quantity=수량 ... html들은 해당 데이터를 key 값으로 불러서 사용하는 것 국제화 메세지 파일(messages.properties)을 각 나라별로 별도로 관리하여 서비스를 국제화함 messages_ko.properties / messages_en.properties 등으로 나누어 관리할 수 있음 MessageSource 스프링 부트에서는 MessageSource를 자동 빈 등록 해줌 MessageSource 수동 빈 등록 방법 @Bean public M.. 2023. 8. 16.
타임리프 - 스프링 통합과 폼 th:object = "${item}" 에서 사용할 객체를 지정한다. th:field = "*{itemName}" 선택 변수식을 사용하여 field 이름만으로도 바인딩이 가능하다 태그 속성으로 id, name을 field명으로 자동 생성해주고, field의 값을 value에 자동으로 넣어준다. 단일 체크박스 form에서 _open(히든 필드 추가)을 사용하면 null로 넘어온 open의 값을 false로 바꿔준다. 스프링 MVC가 언더바가 붙어있는 필드명의 값만 들어온것을 확인하고 필드명의 값을 false로 바꿔줌 더 간단한 방법으로 th:field를 사용하면 히든필드를 추가할 필요없이 자동으로 처리된다. (히든필드를 타임리프가 자동으로 만들어줌) th:field를 사용하면 불러온 값이 true일 때 c.. 2023. 8. 15.
타임리프 기본 표현식 / 리팩토링 - 타임리프 표현식 수정 간단한 표현 변수 표현식: ${...} 선택 변수 표현식: *{...} 메시지 표현식: #{...} 링크 URL 표현식: @{...} 조각 표현식: ~{...} 리터럴 텍스트: 'one text', 'Another one!',… 숫자: 0, 34, 3.0, 12.3,… 불린: true, false 널: null 리터럴 토큰: one, sometext, main,… 문자 연산 문자 합치기: + 리터럴 대체: |The name is ${name}| 산술 연산 Binary operators: +, -, *, /, % Minus sign (unary operator): - 불린 연산 Binary operators: and, or Boolean negation (unary operator): !, not 비교와 .. 2023. 8. 14.
취업 준비, 스프링 부트 강의 강의 스프링 MVC 프레임 워크 만들기 v1 - 프론트 컨트롤러 v2 - view 분리 (View.render) v3 - 서블릿 종속성 제거 (ModelAndView) , 뷰 이름 중복 제거 (viewResolver) v4 - 단순, 실용적 (Model), 뷰의 논리 이름 반환, 모델이 파라미터로 들어오기 때문에 직접 생성하지 않아도 됨 v5 - 어댑터 패턴 적용하여 프론트 컨트롤러가 여러가지 컨트롤러 처리 가능 (HandlerAdapter, Handler) 서블릿 종속성을 제거하기 위해 model 사용 application.properties ⇒ logging.level.org.apache.coyote.http11=debug DispatcherServlet = FrontController MVC 프레임.. 2023. 7. 31.
Spring Boot 스프링 빈 등록방법1 - 직접 등록 @Configuration + @Bean 직접 스프링 빈으로 등록한 객체는 스프링이 관리하지 않는다. 구성 정보(XML or Config.class)를 넣어서 스프링 컨테이너(ApplicationContext) 생성 스프링 빈 등록 : 스프링 컨테이너는 파라미터로 넘어온 설정 클래스 정보를 사용해서 스프링 빈을 등록한다 빈 이름은 대개 메소드 이름을 사용한다. 스프링 빈 등록 방법2 - 자동 등록 @Component (@Repository, @Service, @Controller) + @Autowired 구성 정보 없이 컴포넌트 스캔만을 이용하여 빈을 등록하는 방법 @Component가 포함되어있는 어노테이션을 이용해 스프링 빈으로 등록함 의존 관계 주입을 위해 @Au.. 2023. 5. 22.
MyBatis 마이바티스란?관계형 데이터베이스 프로그래밍을 쉽게 도와주는 프레임 워크리포지토리 영역(DAO)을 마이바티스가 관리함관리 영역 - sql관리, 파라미터 대입, 실행, 결과 매핑하여 서비스 영역으로 돌려줌개발자가 쿼리를 직접 실행하지 않고 설정만 해주면됨XML 파일로 작성함 마이바티스 시작configurationDB 연결정보 관리 (DBOpen 클래스 역할), mapper xml 파일(DAO 클래스) 등록 mapper쿼리문 관리 (DAO 클래스 역할)대체적으로 mapper의 namespace 이름은 테이블명과 같게 한다종결문자(;) 생략하여 쿼리문 작성파라미터 바인딩 표기법 - #{property} : 물음표를 사용하지 않고 parameterType 객체의 멤버 변수를 바로 적용함resultMap : DB .. 2023. 5. 16.
예습) 스프링 입문 ApplicationContext 스프링 컨테이너라 한다 → 정확히는 스프링 컨테이너를 BeanFactory, ApplicationContext로 구분하여 불러야 하지만, BeanFactory를 직접 사용하는 경우는 거의 없으므로 ApplicationContext를 스프링 컨테이너라 한다. ApplicationContext 객체를 생성할 때 매개값으로 Java 코드로 된 설정 정보를 넘긴다. ApplicationContext 에 정의한 @Bean 설정 정보를 읽어와 Greeter 객체를 생성, 초기화한다. AnnotationConfigApplicationContext 는 ApplicationContext 인터페이스의 구현체이다 ApplicationContext applicationContext = new.. 2023. 5. 11.
예습)스프링 입문 application 사용하기 파일 등록하기 프레임워크 vs 라이브러리 프레임워크가 내가 작성한 코드를 제어하고, 대신 실행하면 그것은 프레임워크가 맞다. (JUnit) 반면에 내가 작성한 코드가 직접 제어의 흐름을 담당한다면 그것은 프레임워크가 아니라 라이브러리다 정적 클래스 의존관계 실행해보지 않고도 의존관계를 쉽게 판단할 수 있다 클래스 다이어그램 (화살표 방향으로 의존) 동적 클래스 의존관계 실행해봐야만 알 수 있다 객체 다이어그램 (화살표 방향으로 의존) @Configuration Bean을 등록할 때 싱글톤이 되도록 보장해준다 스프링 컨테이너에서 Bean을 관리할 수 있게 한다 스프링에서 CGLIB라는 바이트코드 조작 라이브러리를 사용해서 AppConfig를 상속받은 임의의 클래스를 통해서 싱.. 2023. 5. 11.
반응형