스프링 데이터 JPA-22.Query by Example

스프링 데이터 JPA: Query by Example

QBE는 필드 이름을 작성할 필요 없이(뻥) 단순한 인터페이스를 통해 동적으로 쿼리를 만드는 기능을 제공하는 사용자 친화적인 쿼리 기술입니다. (감이 1도 안잡히는거 이해합니다.. 코드를 봐야 이해하실꺼에요.)

Continue reading

스프링 데이터 JPA-17.쿼리 메소드, Sort

스프링 데이터 JPA: 쿼리 메소드

쿼리 생성하기

  • https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation
  • And, Or
  • Is, Equals
  • LessThan, LessThanEqual, GreaterThan, GreaterThanEqual
  • After, Before
  • IsNull, IsNotNull, NotNull
  • Like, NotLike
  • StartingWith, EndingWith, Containing
  • OrderBy
  • Not, In, NotIn
  • True, False
  • IgnoreCase

Continue reading

스프링 데이터 JPA-10.커스텀 리포지토리, 기본 레포지토리 커스터마이징(스프링 데이터 Common)

스프링 데이터 Common: 커스텀 리포지토리

쿼리 메소드(쿼리 생성과 쿼리 찾아쓰기)로 해결이 되지 않는 경우 직접 코딩으로 구현 가능.

  • 스프링 데이터 리포지토리 인터페이스에 기능 추가.
  • 스프링 데이터 리포지토리 기본 기능 덮어쓰기 가능.
  • 구현 방법
    • 커스텀 리포지토리 인터페이스 정의
    • 인터페이스 구현 클래스 만들기 (기본 접미어는 Impl)
    • 엔티티 리포지토리에 커스텀 리포지토리 인터페이스 추가

Continue reading

스프링 데이터 JPA-09.쿼리 만들기 개요 및 실습,비동기 쿼리(스프링 데이터 Common)

스프링 데이터 Common: 쿼리 만들기 개요

스프링 데이터 저장소의 메소드 이름으로 쿼리 만드는 방법

  • 메소드 이름을 분석해서 쿼리 만들기 (CREATE)
  • 미리 정의해 둔 쿼리 찾아 사용하기 (USE_DECLARED_QUERY)
  • 미리 정의한 쿼리 찾아보고 없으면 만들기 (CREATE_IF_NOT_FOUND)

Continue reading

스프링 웹 MVC-26.모델 @ModelAttribute

모델: @ModelAttribute 또 다른 사용법

@ModelAttribute의 다른 용법

  • @RequestMapping을 사용한 핸들러 메소드의 아규먼트에 사용하기
  • @Controller 또는 @ControllerAdvice(뒤에서 포스팅)를 사용한 클래스에서 모델 정보를 초기화 할 때 사용한다.
  • @RequestMapping과 같이 사용하면 해당 메소드에서 리턴하는 객체를 모델에 넣어 준다.
    • RequestToViewNameTranslator

Continue reading

스프링 웹 MVC-10.HTTP 메시지 컨버터(개요, JSON, XML)

HTTP 메시지 컨버터 1부: 개요

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/config/annotation/WebMvcConfigurer.html#configureMessageConverters-java.util.List-
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/config/annotation/WebMvcConfigurer.html#extendMessageConverters-java.util.List-

Continue reading

스프링 웹 MVC-02.서블릿 소개, 애플리케이션 개발, 리스너와 필터

서블릿 소개

서블릿 (Servlet)

  • 자바 엔터프라이즈 에디션은 웹 애플리케이션 개발용 스팩과 API 제공.

    자바로 웹 애플리케이션을 개발할 수 있는 스펙과 API 제공(자바로 웹을 만들기 위해 필요한 기술)
    좀 더 설명하면, 클라이언트가 어떠한 요청을 하면 그에 대한 결과를 다시 전송해 주어야 하는데, 이러한 역할을 하는 자바 프로그램.

Continue reading

스프링 데이터 JPA-06.리포지토리(스프링 데이터 Common)

구분설명
스프링 데이터SQL & NoSQL 저장소 지원 프로젝트의 묶음.
스프링 데이터 Common여러 저장소 지원 프로젝트의 공통 기능 제공.
스프링 데이터 REST저장소의 데이터를 하이퍼미디어 기반 HTTP 리소스로(REST API로) 제공하는 프로젝트.
스프링 데이터 JPA스프링 데이터 Common이 제공하는 기능에 JPA 관련 기능 추가.

Continue reading

부트 개념과 활용-33.Actuator 소개, JMX와 HTTP(스프링 부트 운영)

스프링 부트 Actuator 1부: 소개

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready-endpoints
애플리케이션의 각종 정보를 확인할 수 있는 Endpoints

  • 다양한 Endpoints 제공.(공식문서 표 확인)
  • JMX 또는 HTTP를 통해 접근 가능 함.
  • shutdown을 제외한 모든 Endpoint는 기본적으로 활성화 상태.
  • 활성화 옵션 조정
    • management.endpoints.enabled-by-default=false
    • management.endpoint.info.enabled=true

Continue reading

부트 개념과 활용-32.RestTemplate과 WebClient, 커스터마이징(스프링 REST 클라이언트)

스프링 REST 클라이언트 1부: RestTemplate과 WebClient

RestTemplate

Blocking I/O 기반의 Synchronous API
RestTemplateAutoConfiguration
프로젝트에 spring-web 모듈이 있다면 RestTemplateBuilder를 빈으로 등록해 줍니다.
https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#rest-client-access

구현 코드(RestTemplate)

~~~java @RestController public class SampleController {

Continue reading

부트 개념과 활용-31.시큐리티 설정 커스터마이징(스프링 시큐리티)

스프링 시큐리티 2부: 시큐리티 설정 커스터마이징

웹 시큐리티 설정

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/", "/hello").permitAll() // 해당 요청 모두 허용
                .anyRequest().authenticated() // 나머지 요청은 인증 필
                .and()
                .formLogin()// 폼 로그인을 사용하고
                .and()
                .httpBasic(); // http 베이직 사용
    }
}

이렇게 구현하면 / 와 /hello 요청은 인증 없이 사용이 가능하다.

Continue reading

부트 개념과 활용-23.DBCP와 MySQL(스프링 데이터)

부트 개념과 활용-23.DBCP와 MySQL(스프링 데이터)

DBCP(데이터베이스 커넥션 풀)

데이터베이스의 커넥션을 만들고 하는 작업들은 과정이 많은 작업이 이루어지기 때문에 짧지 않고 복잡하다.
커넥션을 미리 만들어 놓고, 미리 만들어 놓은 커넥션을 가져다 쓰는 방법.

Continue reading

부트 개념과 활용-21.CORS(웹 MVC)

스프링 웹 MVC 11부: CORS

  • Cross-Origin Resource Sharing의 약자.
  • Single-Origin Policy를 우회하기 위한 표준 기술.

    SOP과 CORS

  • Single-Origin Policy - 같은 오리진에만 요청을 보낼 수 있다.
  • Cross-Origin Resource Sharing - 서로다른 오리진끼리 리소스를 쉐어할수 있는 방법을 제공하는 표준

Continue reading

부트 개념과 활용-20.Spring HATEOAS

스프링 웹 MVC 10부: Spring HATEOAS

  • HATEOAS를 구현하기 위해 필요한 기능을 제공하는 일종의 툴.

    HATEOAS

  • HATEOAS는 Hypermedia As The Engine Of Application State의 약자
  • 하이퍼미디어를 REST API의 상태 정보를 관리하기 위한 매커니즘으로 활용하는 것

    하이퍼미디어 : 하이퍼미디어 정보는 이용자가 정보를 탐색할 때 어떤 제목에서 관련 제목으로 뛰어넘어 갈 수 있도록 연결.
    연결된 정보가 주로 문자 정보로 되어 있으면 하이퍼텍스트이고, 음악, 영상, 애니메이션 또는 다른 요소가 포함되어 있으면 하이퍼미디어.

Continue reading

스프링 핵심 기술-11.PropertyEditor/Converter와 Formatter(데이터 바인딩 추상화)

데이터 바인딩 추상화: PropertyEditor

데이터 바인딩?

기술적인 관점: 프로퍼티 값을 타겟 객체에 설정하는 기능
사용자 관점: 사용자 입력값을 애플리케이션 도메인 모델에 동적으로 변환해 넣어주는(할당하는) 기능

Continue reading

스프링 핵심 기술-02.@Autowire

IoC 컨테이너 3부 : @Autowire

이번 장도 마찬가지로 이전 포스트와 겹치는 내용들이 많았지만,
중간중간 에러 사례를 보여주며 자세한 옵션들 등 도움이 되는 추가 정보들이 있었던 것 같다.
자세한 설명은 이전 포스트를 참고하면 될 것 같다.

Continue reading

Spring Triangle-03.스프링 PSA

스프링 PSA

PSA?

우선 참고 문서를 보면

PSA(Portable Service Abstraction)란 환경의 변화와 관계없이 일관된 방식의 기술로의 접근 환경을 제공하려는 추상화 구조를 말한다. 이는 POJO 원칙을 철저히 따른 Spring 의 기능으로 Spring 에서 동작할 수 있는 Library 들은 POJO 원칙을 지키게끔 PSA 형태의 추상화가 되어있음을 의미한다.  가령 일반적인 JUnit이나 Mybatis 등의 여러 Java Framework 에서 사용가능한 라이브러리들은 Spring 에서 지원하는 JUnit 이나 MyBatis 라이브러리와 다르다. 또한 JPA를 사용할 때에 있어서도 Spring JPA가 추상화 시켜준다.
따라서 개발자가 Hibernate를 사용하건 EclipseLink 를 사용하건 신경쓸 필요가 없다.
따라서 이러한 외부 라이브러리들은 Spring에서 사용할 때 내부구현이 달라지더라도 동일한 인터페이스로 동일한 구동이 가능하게끔 설계되어 있으며 의존성을 고려할 필요가 없다.
Spring 은 이렇듯 특정 기술에 직접적 영향을 받지 않게끔 객체를 POJO 기반으로 한번씩 더 추상화한 Layer 를 갖고 있으며 이를통해 일관성있는 서비스 추상화를 구현한다.

그냥 쉽게 말하면 잘 만든 인터페이스로 이해하면 될 것 같다.
스프링의 철학처럼, 비침투성, POJO 등..
내가 어떤 코드를 짰는데, 그게 JPA를 쓰던, MyBatis 쓰던 코드의 변경이 없어도 된다. 어떤 특정 기술에 특화된 코드가 아니다.
(잘 만든 인터페이스를 사용하기 때문에)

Continue reading

Spring Triangle-01.스프링 IoC

시작

본격적인 로드맵 시작으로 예제로 배우는 스프링 입문(개정판)을 스타트했다.
대충은 아는 개념들이긴 했지만, 예제 특히 코드로써 직접 구현해보기도 하고,
그냥 매번 쓰는 방식대로 사용만 해오다가 명확하게 어떤 방식으로 구현되는지, 동작 원리나 라이프사이클 그리고 다른 구현 방식들에 대해서도 알게되었다.
추가적으로 기존에 명확히 정리되지 않던 개념들은 찾아보고 정리하면서 더 좋은 공부가 된 것 같다.

Continue reading

스프링 공식 예제 프로젝트 PetClinic

들어가며

스프링을 활용 웹 개발을 주로 하긴 하지만..
단순 구현이 아니라, 자세한 동작 원리부터 시작해서 깊게 한번 공부를 해 보고 싶다는 생각이 들었다.
(사실 입사하자마자 난 인정받는 에이스 개발자가 될거야! 하며 뿜뿜 열심히 그때 당시 도움이 될만한 공부들을 했는데,
기록하지 않고 혼자 공부하니 까먹는 것들이 생기더라.. 나중에 내가 정리한 걸 찾아보기도 어렵고..
또 대학시절 블로그를 운영하며, 정리하며 하게 되는 공부의 중요성, + 기타 나중에 찾아볼때 등 장점을 알고 있기 때문에
물론 그냥 공부한 하는것보단 훨씬 많은 시간이 소요될 테지만, 내 시간을 좀 더 추가해서 깊고, 오래가는 공부를 꾸준히 하려고 한다.
스프링 뿐만 아니라 꾸준히 계속해서 다른 분야까지도..

Continue reading

Pagination


© 2019. by jaeuk