#spring
23
Java EcoTILSpring Framework
JdbcTemplate의 SimpleJdbcInsert Bean 등록에 관하여
Reference 일단 오류와 상관없이.. SimpleJdbcInsert를 빈으로 만드는건 뭔가 이상한듯 저게 저 Repository에서만 쓸텐데.. 저걸 빈으로 만들어서 얻는 이점이 없음 JDBC 드라이버에서 제공해주는 DB 메타데이터를 사용해서 insert 쿼리 정보로 사용한다던데 왠지 빈으로 등록 시점에 JDBC 연결이 완료되지 않았을수도 있겠다 여튼, Entity 객체에서 리플렉션으로 '타입'정보를 꺼내쓴다면 애초에 dataSource같은게 필요없겠지 (순수 Java 리플렉션만으로 될테니) 근데 DataSource를 요구한다
Java EcoTILSpring Framework
세션을 사용하기 위한 Filter와 Interceptor
세션 생성을 자동으로 해주는 객체 기본 사용법 쿠키를 지원하는지 안하는지 서버는 모른다. 그래서 주소에 JSESSIONID를 세션 생성할때 내려 보내는데 이것을 모든 컨트롤러에서 다 파싱을 해야하니 불편하다. 대게는 쿠키지원을 하니까 tracking-modes를 cookie로 변경하면 주소에 JSESSIONID가 사라진다. Filter : 서블릿 Interceptor : 스프링 만약 로그인 여부 체크를 컨트롤러마다 해야 한다면 번거롭다. 그래서 공통 관심사를 처리하는 AOP를 활용할 수도 있지만, 예를들어 특정URL에 대한 처리와
Java EcoTILSpring Framework
Spring Boot; 훑어보기#5 - Spring Data JPA
구현체 없이 인터페이스만으로 리포지토리에 커밋이 가능한 코드를 만들 수 있다. 반복적으로 개발한 CRUD 기능도 스프링 데이터 JPA가 모두 제공한다. RDB에서 스프링 데이터 JPA는 아주 좋은 기능이다. 이외의 인터페이스 선언이나 구현체는 필요없다. 인터페이스 이름에 규칙이 있다. (JPQL) 예를들어 findByNameAndId 라고 하면 & 연산자를 넣을 수 있다. 간단한 요구사항은 인터페이스 이름만으로 개발이 끝난다. 페이징 기능을 자체적으로 제공한다. 의존주입도 Repository 의존만 받아오면 된다. 스프링 데이터 J
Java EcoTILSpring Framework
Spring Boot; 훑어보기#4 - JPA
JPA → 인터페이스 (자바 표준) hibernate → 구현체 (여러 벤더들이 있음) 쿼리도 JPA가 직접 만들어서 실행해준다. 객체를 메모리에 넣듯 DB에 넣을 수 있게 해준다. SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환할 수 있다. build.gradle application.properties spring.jpa.show-sql: JPA가 날리는 쿼리를 볼 수 있다. spring.jpa.hibernate.ddl-auto: 테이블을 자동으로 만들어주는 기능이다. (none/create) @Id : 인식
Java EcoTILSpring Framework
Spring Boot; 훑어보기#3 - JDBCTemplate
H2 데이터베이스 순수 JDBC 스프링 JdbcTemplate : JDBC 중복을 제거해서 만든 템플릿 JPA : 객체를 쿼리 없이 DB에 저장하는 방법 스프링 데이터 JPA : JPA를 간단하게 쓰기 위한 스프링의 Wrapping official site bin/h2.sh 실행 JDBC URL : jdbc:h2:tcp://localhost/~/h2/test 파일로 직접 접근하지 말고 TCP로 접속. build.gradle 추가 Connection 객체 : DB연결 객체 PreparedStatement 객체 : 쿼리와 코드를 매칭해
Java EcoTILSpring Framework
Spring Boot; 훑어보기#2 - GetMapping, PostMapping
URI를 매핑하고 템플릿으로 반환한다. (String) 접근을 변수에 바로 하더라도 getter로 접근하여 (propperties방식) 반환받는다. Controller를 먼저 찾고 없으면 static 파일을 찾는다.
Java EcoTILSpring Framework
스프링5; AOP의 실제 #1
스프링에서 프록시 패턴을 어떻게 적용시키는지 실제로 스프링을 통해 적용해본다. proxy 패턴은 decorator 객체 로도 활용할 수 있다. 기능 추가와 확장에 초점이 맞춰져있다. 프록시의 특징은 핵심 기능은 구현하지 않는다는 점이다. 프록시는 핵심 기능을 구현하지 않는 대신 여러 객체에 공통으로 적용할 수 있는 기능을 구현한다. AOP의 기본 핵심은 공통 기능을 삽입하는 것 이다. 공통 관심 기능을 핵심 로직에 적용하는 시점을 정의한다. ex) 메소드를 호출하기 전에 트랜잭션을 시작하는 기능을 적용한다. Advice를 적용하는
Java EcoTILSpring Framework
스프링5; Prototype 범위
스프링 컨테이너는 기본적으로 bean객체를 생성 할 떄 싱글톤으로 생성한다. 그러나 여러개의 인스턴스가 필요한 경우 prototype으로 scope를 지정하면 된다. bean설정에서 scope에 속성으로 지정하면 된다. 아래 코드 참고. 그리고 아래 코드를 실행 하면 false가 반환된다. 프로토타입 범위를 갖는 bean은 완전한 라이프사이클을 따르지 ㅇ낳는다. 컨테이너 생성시 초기화 작업까지는 하지만 컨테이너 를 소멸하는 close() 작업시 bean객체의 destroy()를 실행하지 않는다. 그래서 프로토타입 bean을 사용할때