일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Effective JAVA
- 제네릭 타입
- annotation processor
- 제네릭 와일드 카드
- 로컬 클래스
- 익명 클래스
- 합병 정렬
- github api
- 정렬
- 브릿지 메소드
- auto.create.topics.enable
- junit 5
- Study Halle
- Switch Expressions
- 접근지시자
- 함수형 인터페이스
- 자바스터디
- 프리미티브 타입
- 바운디드 타입
- System.in
- raw 타입
- public 필드
- System.out
- 스파르타코딩클럽
- 항해99
- 람다식
- System.err
- 자바할래
- 상속
- Java
- Today
- Total
목록전체 글 (271)
코딩하는 털보
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..
Resource / Validation Resource 추상화 Spring에서는 java.net.URL을 추상화한 Resource 가 있다. 추상화한 이유… Resource는 classpath 기준으로 읽어올 수 있다. ServletContext를 기준으로 읽어올 수 없다. 구현이 복잡하고 편의성 메소드가 부족하다. 구현체… UrlResource ClassPathResource (classpath: 접두어 지원) FileSystemResource ServletContextResource : 웹 어플리케이션 루트에서 상대 경로로 리소스를 찾는다. Resource의 타입은 ApplicationContext의 타입에 따라 결정된다. ex) ClassPathXmlApplicationContext -> Class..
PSA (Portable Service Abstraction) 이미 잘 만들어진 인터페이스를 사용하는 것. 확장성이 좋지 못한 코드 또는 기술에 특화되어 있는 코드에 사용하면 좋다. Spring Framework이 제공하는 API는 대부분이 추상화되어있다. 추상화 예제 스프링 트랜잭션 @Transactional 어노테이션의 Aspect는 PlatformTransactionManager 인터페이스를 사용하여 코딩되어 있는데, 그렇기 때문에 PlatformTransactionManager에 대한 구현체 (JpaTransactionManager, DatasourceTransactionManager, HibernateTransactionManager 등)가 바뀌더라도 @Transactional Aspect의 코..
AOP (Aspect Oriented Programming) 흩어진 Concern을 Aspect로 모듈화 할 수 있는 프로그래밍 기법이다. AOP의 핵심은 흩어진 코드(여러 곳에서 반복되는 코드)를 한 곳으로 모으는 것. AOP의 구현체로 AspectJ와 스프링 AOP가 있다. Concern(여러 경로에 흩어져 있는 비슷한 코드)의 변경이 있을때 Concern들을 Aspect로 모아서 Aspect만 변경함으로서 모든 경로에서 각각 따로 변경해줘야 하는 번거로움을 방지해준다. AOP 주요 개념 Aspect : 모아진 코드와 정보 집합 모듈 Advice : 구현될 기능 PointCut : 어디에 적용되는지의 정보 Target : 적용이 되는 대상 Join Point : 생성자 호출 직전/직후, 메서드 호출시..
IoC (Inversion of Control) Spring의 대표적인 특징 중 하나. 어떤 객체가 사용하는 의존 객체를 직접 만들어서 사용하는게 아니라, 주입(DI)받아서 사용하는 것. Spring IoC Container : 애플리케이션 컴포넌트의 중앙 저장소. ApplicationContext : IoC 컨테이너의 핵심적인 인터페이스. IoC 컨테이너의 최상위 인터페이스인 BeanFactory를 상속받아 여러 기능이 추가됨. 메시지 소스 처리 (i18n) 이벤트 발행 리소스 로딩 IoC 컨테이너에 객체를 생성하고 생성된 객체들(Bean)의 의존성을 관리해준다. 이해만 해둘뿐, 딱히 이 인터페이스에 대해 직접 보거나 사용할 일은 없는 듯. ClassPathXmlApplicationContext : X..
maven / logback maven build를 담당하는 maven & gradle mvc compile을 통해 필요한 library들을 검토하고 자동으로 다운로드 해준다. 다운받은 jar파일들은 User Home 디렉토리의 .m2/repository에 보관된다. 설정 파일 maven : pom.xml gradle : build.gradle 컴파일하면 target으로 실행가능하도록 생성됨 logback (slf4j) level이 내려갈수록 log 범위가 작아짐 logging을 담당하는 logback .trace .debug .info .warn .error logback에 대한 설정은 src/main/resources에 logback.xml(spring-boot에서는 logback-spring.xml..