본문 바로가기
  • 실행력이 모든걸 결정한다
반응형

Spring Series/Spring Framework80

[Spring] Controller의 종류와 다양한 전략 1. Controller의 종류 1) Servlet - javax.servlet.Servlet을 상속한 클래스를 컨트롤러로 사용한다. @Component("/home") // bean 이름을 이용한 핸들러 매핑 방식 이용 public class HomeServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... } } - Servlet을 DispatcherServlet에 연결해주기 위해 SimpleServletHandlerAdapter가 bean으로 등록되어 있어야 한다. - 서블릿 클래스 코드를.. 2022. 7. 16.
[Spring] 웹 프레젠테이션 계층 테스트 이번 포스팅에서는 프로젝트를 서버에 배치하지 않은 채로 웹 프레젠테이션 계층을 쉽게 테스트할 수 있는 방법을 알아볼 것이다. 1. 서블릿 테스트용 Mock 오브젝트 1) MockHttpServletRequest (1) 생성 - HttpServletRequest는 HTTP의 요청정보를 담은 객체다. - 다음과 같이 HTTP 메소드와 URI를 포함하여 생성하면 된다. MockHttpServletRequest request = new MockHttpServletRequest("GET", "/home"); (2) 유용한 메소드 - void setParameter(String name, String value) : String형 파라미터를 지정 - void setAttribute(String name, Objec.. 2022. 7. 14.
[Spring] DispatcherServlet의 DI 전략 1. DispatcherServlet의 소개 및 역할 - DispatcherServlet은 클라이언트로부터 최초로 요청을 받는 프론트 컨트롤러 역할을 하는 서블릿으로, 이 곳을 기점으로 작업을 분배하게 된다. - Spring의 웹 기술을 구성하는 다양한 전략을 DI로 구성해서 동작 방식을 확장하도록 만들어져 있다. - 대부분의 상황에 적절하게 사용될 수 있는 전략들이 기본적으로 설정되어 있으며, 이 디폴트 전략들은 spring-webmvc.jar에 들어 있는 DispatcherServlet.properties 설정파일로부터 가져온다. - 설정 파일에 명시적으로 DispatcherServlet의 전략 bean을 등록하면 DispatcherServlet의 디폴트 전략은 무시된다. - Spring 3.0에서는.. 2022. 7. 13.
[Spring] @Transactional의 속성 @Transactional은 Fallback 정책을 통해서 특정 트랜잭션 속성을 적용할 대상을 매우 유연하게 선정할 수 있도록 하는 어노테이션이다. Fallback 정책은 @Transactional 어노테이션의 작성 위치에 따른 설정의 우선순위를 다르게 적용하는 것이다. 타깃 메소드 > 타깃 클래스 > 선언 메소드 > 선언 타입 ※ 여기에서 선언은 인터페이스처럼 선언만 하고 구현하지 않은 대상을 뜻한다. 트랜잭션의 구조 및 속성은 다음과 같다. @Target({ElementType.TYPE, ElementType.METHOD}) // 어노테이션 사용대상 지정 @Retention(RetentionPolicy.RUNTIME) // 어노테이션의 정보유지 기간 @Inherited @Documented publi.. 2022. 7. 9.
[Spring] Hibernate 1. Hibernate란? - Hibernate는 JPA를 구현한 ORM 라이브러리들 중 하나다. - Spring과 Hibernate는 비슷한 시기에 POJO 프로그래밍을 바탕으로 자바 엔터프라이즈 개발의 혁신을 가져온 대표적인 기술이다. 2. SessionFactory 1) SessionFactory란? - Hibernate의 핵심 엔진 역할을 하는 인터페이스다. - SessionFactory는 bean으로 등록된 DataSource를 이용하여 spring이 제공하는 트랜잭션 매니저와 연동할 수 있도록 설정되어 있다. - Spring에서는 SessionFactory bean을 생성해주는 LocalSessionFactoryBean과 AnnotationSessionFactoryBean을 제공한다. 2) S.. 2022. 7. 6.
[Spring] Spring이 제공하는 JPA 이 포스팅을 읽고 이해하려면 EntityManager, EntityManagerFactory 그리고 persistence.xml에 대한 어느 정도 기초 지식이 필요하다. 이전에 필자가 정리한 포스팅을 참고하길 바란다. https://kimcoder.tistory.com/355 [JPA] EntityManager / 트랜잭션 간단 예제 이번 포스팅에서는 실제로 JPA를 이용하여 간단한 트랜잭션 체계를 만들어볼 것이다. 1. EntityManager와 EntityManagerFactory 예제에 들어가기 전에 알아둬야 할 클래스들이다. 1) EntityManager (1) 특징 - Ent.. kimcoder.tistory.com 1. LocalContainerEntityManagerFactoryBean - .. 2022. 7. 2.
[Spring] 더 편리해진 Spring JDBC 1. Spring JDBC란? - Spring JDBC는 DriverManager에 드라이버를 로드하고, Connection, Statement, ResultSet 관련 작업, 자원 해제 작업과 트랜잭션 작업을 모두 담당 해주기 때문에 상당한 소스코드를 줄일 수 있게 된다. - Spring JDBC는 JDBC 작업 중에 발생하는 모든 예외를 처리해준다. DB별 에러 코드를 참고해서 SQLException 예외를 DataAccessException 타입의 계층구조 내의 예외로 변환해준다. - Spring JDBC는 멀티 쓰레드 환경에 안전하다. - Spring JDBC의 접근 방법 중에서 JdbcTemplate이 가장 대표적인데, JdbcTemplate 기능을 모두 갖고 있으면서 더 발전되고 편리한 사용 .. 2022. 6. 29.
[Spring] .gitignore 적용하기 Spring의 프로퍼티 파일에는 중요한 기밀 정보가 담겨있을 가능성이 높기 때문에 프로젝트를 git에 올릴 때 실제 프로퍼티 파일은 반영하지 않아야 한다. git에 반영하지 않을 파일은 .gitignore이 위치한 경로를 기준으로 작성해주면 된다. 예를 들어, 프로젝트 최상위에 .gitignore 파일을 두었다고 하자. 그리고 commit 하고 싶지 않은 파일인 application.properties는 다음과 같은 경로에 저장되어 있다. 이 때에는 .gitignore 파일을 열어서 application.properties의 경로를 .gitignore의 상대 경로를 기준으로 추가해주면 된다. 중간 경로를 모두 작성해줘도 되고, **를 이용해서 중간 경로를 생략해줘도 된다. 그리고 git의 캐시 문제로 인.. 2022. 6. 29.
[Spring] Bean의 id와 name 1. Bean의 식별자 - Bean의 식별자로는 id와 name이 있다. - Bean은 2개 이상의 식별자도 가질 수 있다. Bean에게 2개 이상의 식별자를 주는 이유는 해당 bean을 사용하는 곳에 따라 다양한 이름으로 참조할 수 있도록 함으로써 이름을 짓는 관례를 모두 맞춰줄 수 있게 하기 위함이다. - Bean의 식별자는 애플리케이션 컨텍스트 내에서 고유해야 한다. 2. id와 name의 차이점 1) id - id에는 다음과 같은 작성 규칙이 존재한다. 공백이 들어갈 수 없다. 첫 글자는 알파벳, 밑줄(_), 허용된 일부 문자만 사용할 수 있다. 나머지 글자는 알파벳, 밑줄, 숫자, 점(.)을 허용하며, 그 외의 특수문자는 사용할 수 없다. - id를 생략한다면 컨테이너는 자동으로 id를 부여해준.. 2022. 6. 23.