일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 함수형 인터페이스
- 익명 클래스
- Study Halle
- 로컬 클래스
- 자바할래
- 자바스터디
- 상속
- github api
- throwable
- auto.create.topics.enable
- 바운디드 타입
- System.err
- annotation processor
- System.out
- 합병 정렬
- System.in
- 제네릭 타입
- raw 타입
- junit 5
- docker
- 스파르타코딩클럽
- 람다식
- yield
- 제네릭 와일드 카드
- 정렬
- 프리미티브 타입
- Switch Expressions
- 항해99
- 브릿지 메소드
- 접근지시자
- Today
- Total
목록IT Study/Spring Framework (15)
코딩하는 털보
Spring Security 폼 인증 스프링 시큐리티 연동 의존성 (부트의 버전 생략 기 사용) org.springframework.boot spring-boot-starter-security 스프링 부트의 시큐리티 자동 설정에 의하여… 모든 요청에서 인증이 필요하고, 기본 계정이 생성된다. (애플리케이션 실행마다 패스워드 바뀜) 스프링 시큐리티 설정 설정 파일 추가 @EnableWebSecurity 애노테이션(부트에서 생략가능), WebSecurityConfigurerAdapter 상속 @Configuration @EnableWebSecurity public class WebConfig extends WebSecurityConfigurerAdapter { } WebSecurityConfigurerAda..
Spring Data JPA Spring Data JPA 원리 JpaRepository 인터페이스 데이터 접근 오브젝트 역할을 하는 매직 인터페이스. @Repository 애노테이션 없이 빈으로 등록 됨. 기본적으로 CRUD 메서드를 제공해준다. public interface PostRepository extends JpaRepository { } @EnableJpaRepository : @Configuration 스프링 설정 클래스에 붙여야 JpaRepository 인터페이스를 사용할 수 있다. (스프링 부트에서는 자동으로 설정된다.) @EnableJpaRepository는 JpaRepositoriesRegistrar.class를 import 하는데, 이 클래스가 JpaRepository 인터페이스를 ..
스프링 MVC 핵심 기술 HTTP 요청 맵핑하기 HTTP Method GET 요청 클라이언트가 서버의 리소스를 요청할 떄 사용 캐싱 가능 (조건적 GET 가능) 브라우저의 기록에 남고 북마크가 가능 URL이 다 보이므로 민감한 데이터에는 맞지 않음 idempotent POST 요청 클라이언트가 서버의 리소스를 수정하거나 새로만들 떄 사용 서버에 보내는 데이터를 POST 요청 본문에 담는다 캐싱 불가능 브라우저 기록에 남지 않고 북마크가 불가능 데이터 길이 제한이 없다 PUT 요청 URI에 해당하는 데이터를 새로 만들거나 수정할 떄 사용 POST와 다른 점은 "URI"에 대한 의미에 있다 POST의 URI는 보내는 데이터를 처리할 리소스 PUT의 URI는 보내는 데이터에 해당하는 리소스 idempotent..
도메인 클래스 컨버터 자동 등록 스프링 데이터 JPA는 도메인 클래스 컨버터를 제공한다. 도메인 클래스 컨버터 : 스프링 데이터 JPA의 Repository를 사용해서 ID에 해당하는 엔티티를 읽어온다. 스프링 데이터 JPA 및 h2DB 의존성 설정 org.springframework.boot spring-boot-starter-data-jpa com.h2database h2 Repository 추가 public interface PersonRepository extends JpaRepository { } 엔티티 맵핑 @Entity public class Person { @Id @GeneratedValue private Long id; private String name; public Long getId..
스프링 부트에서 JSP 사용하기 의존성 추가 (maven) jstl, jsp 사용을 위한 의존성 추가가 필요하다. javax.servlet jstl org.apache.tomcat.embed tomcat-embed-jasper provided WAR 프로젝트 스프링 부트 프로젝트에서 jsp를 사용하려면 WAR 패키지 설정으로 생성해야 한다. WAR 패키지 설정의 스프링 부트 프로젝트의 특징은 @SpringBootApplication 클래스 외에 WebApplicationInitializer를 구현한 ServletInitializer 클래스가 웹서버 배포를 위해 추가로 생성된다. public class ServletInitializer extends SpringBootServletInitializer { ..
Spring MVC 설정 Spring MVC Bean 설정 DispatcherServlet의 기본 전략에만 의존하기에는 확장성이 저하될 수 있기 때문에 추가적으로 설정할 수 있어야 한다. @Configuration을 사용한 자바 파일에 스프링 MVC 구성요소를 직접 빈으로 등록할 수 있다. @Configuration public class WebConfig { @Bean public ViewResolver viewResolver() { InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setPrefix("/WEB-INF/"); viewResolver.setSuffix(".jsp"); ret..
{% img img_class /img/Spring-MVC.png 430 270 "'spring-mvc'" %} Spring MVC 동작 원리 Spring 웹 MVC 서블릿 기반의 웹 애플리케이션에서 MVC 패턴을 사용하기 쉽게끔 도와주는 프레임워크 M : 모델, 평범한 자바 POJO 객체(도메인 객체 또는 DTO), 전달하거나 전달받을 데이터를 담은 객체 V : 뷰, 데이터를 보여주는 역할, HTML, JSP, 타임리프, … C : 컨트롤러, 사용자의 입력을 받아 모델의 데이터를 변경하거나 뷰에 전달하는 역할 MVC 패턴의 장점 동시 다발적 개발 : 백엔드와 프론트엔드에서 독립적으로 개발할 수 있다. 높은 결합도 : 관련있는 기능을 하나의 컨트롤러로 묶거나 뷰를 그룹화 할 수 있다. 낮의 의존도 : 모..
Null-safety Spring 5부터 추가된 Null 관련 어노테이션. org.springframework.lang 컴파일 시점에 최대한 NullPointerException을 방지할 수 있다. @NonNull : IntelliJ에서 null이면 미리 경고받을 수 있다. @NonNull //return이 Null인지 확인 public String greeting(@NonNull String name) { //매개변수가 Null인지 확인 return "Hi! "+name; } @Nullable 패키지 레벨 설정 (설정된 패키지 이하로 모두 설정) @NonNullApi @NonNullFields
SpEL (스프링 Expression Language) 스프링 EL이란? (upto spring3.0) 객체 그래프를 조회하고 조작하는 기능 제공 Unified EL과 비슷하지만, 메소드 호출이나 문자열 템플릿 기능을 지원한다. OGNL, MVEL, JBoss EL 등 여러 EL이 있지만 SpEL은 모든 스프링 프로젝트 전반에 걸쳐 사용하도록 만들어져있다. 문법 #{"표현식"} @Value("#{100 + 100}") int value; ${"프로퍼티"} @Value("${my.value}") int value; 참고로 표현식 내부에 프로퍼티를 사용할 수 있지만 반대는 안된다. @Value("#{${my.value} eq 100}") boolean isValue100; Sample Bean 참조 @Val..
데이터 바인딩 프로퍼티 값을 타겟 객체에 설정하는 기능. 즉, 사용자 입력값(문자열)을 객체가 가지고 있는 int, Date, Boolean 또는 도메인 타입 등으로 변환해 넣어주는 기능이다. PropertyEditor DataBinder가 변환 작업에 사용하는 인터페이스. 문자열을 객체로 변환하는 Editor 만들기 public class EventEditor extends PropertyEditorSupport { @Override public String setAsText(String text) throws IllegalArgumentException { setValue(new Event(Integer.parseInt(text))); } } PropertyEditorSupport는 PropertyE..