Spring 49

학습 // Spring // MyBatis // Mapper

`업데이트 :: 2018.11.13 Mapper InjectionMapper 등록Mapper 검색Mapper Injection데이터접근객체인 DAO를 만드는 것보다 직접 "SqlSessionTemplate" 혹은 "SqlSessionDaoSupport를" 사용마이바티스 스프링연동모듈은 다른 빈에 직접 주입할 수 있는 스레드 안전한 매퍼를 생성가능 public class FooServiceImpl implements FooService { private UserMapper userMapper; // injection public void setUserMapper(UserMapper userMapper) { // injection this.userMapper = userMapper; } public User..

Spring/MyBatis 2018.11.13

학습 // Spring // MyBatis // Transaction

업데이트 :: 2018.11.01 TransactionsDataSourceTransactionManagerContainer Manager Transactions (CMT)Programmatic Transaction ManagementEXTransactions마이바티스 스프링 연동모듈을 사용하는 중요한 이유중 또 하나 마이바티스가 스프링 트랜잭션에 자연스럽게 연동가능 하다는 것스프링 트랜잭션 관리자를 한 번 설정하면, 스프링에서 트랜잭션을 설정할 수 있음@Transaction과 AOP 스타일의 설정을 모두 지원하나의 SqlSession객체가 생성되고 트랜잭션이 동작하는 동안 지속적으로 사용세션은 트랜잭션이 완료되면 적절히 커밋되거나 롤백됨DataSourceTransactionManager @Bean pub..

Spring/MyBatis 2018.11.13

학습 // Spring // MyBatis // SqlSessionFactory

업데이트 :: 2018.11.01 Quick SetupSqlSessionFactoryBeanQuick Setup org.mybatis mybatis-spring x.x.x 의존성 추가 SqlSessionFactory는 DataSource를 필요로 함DataSource :자바 애플리케이션에 DataBase를 연동하기 위한 추상화된 객체public interface UserMapper { @Select("SELECT * FROM users WHERE id = #{userId}") User getUser(@Param("userId") String userId); } Mapper는 반드시 구현체 클래스가 아닌 인터페이스로 정의UserMapper 인터페이스는 MapperFactoryBean을 사용해서 스프링 DI..

Spring/MyBatis 2018.11.13

학습 // Spring // MyBatis // SqlSession

업데이트 :: 2018.11.13 SqlSessionSqlSessionTemplateSqlSessionDaoSupportSqlSession마이바티스는 SqlSession 생성을 위해 SqlSessionFactory를 사용세션을 한번 생성하면 매핑구문을 실행하거나 커밋 또는 롤백을 하기 위해 세션을 사용마지막으로 더 이상 필요하지 않은 상태가 되면 세션을 닫음마이바티스 스프링 연동 모듈 org.mybatis mybatis-spring x.x.x SqlSessionFactory를 직접 사용하지 않음설정에 따라 자동으로 커밋 혹은 롤백을 수행하고 닫혀지는, 스레드에 안전한 SqlSession 개체가 스프링 빈에 주입SqlSessionTemplate스프링 연동모듈의 핵심SqlSession을 구현하고 코드에서 S..

Spring/MyBatis 2018.11.13

학습 // Spring // Security // Architecture

업데이트 :: 2018.08.22 스프링 시큐리티 모듈프레임워크 아키텍처스프링 시큐리티 모듈spring-security-core인증과 인가기능을 구현하기위한 핵심기능spring-security-web웹 애플리케이션의 보안 기능을 구현하기 위한 컴포넌트로 구성spring-security-config모듈에서 제공하는 컴포넌트의 설정을 지원하기 위한 컴포넌트로 구성spring-security-taglibs인증정보나 인가정보를 사용하기 위한 JSP 태그라이브러리spring-security-oauth2OAuth2를 사용해 인가기능을 구현하기 위한 모듈추가기능일반적인 인증방법(LDAP, OpenID, CAS 등등)을 지원하기 위한 모듈ACL(Access Control List)을 사용한 도메인 객체의 인가를 제어하..

Spring/Security 2018.08.22

학습 // Spring // Security

업데이트 :: 2018.08.22 스프링 시큐리티특징기본 보안기능강화 보안기능스프링 시큐리티애플리케이션에 보안기능을 구현할때 사용하는 프레임워크서블릿 컨테이너에 배포하는 웹 애플리케이션의 보안 기능 구현에서 많이 사용특징다양한 옵션기본 구현 클래스의 동작 방식을 커스텀할 수 있는 다양한 옵션 제공기본 동작 방식이 보안 요구사항에 부합하지 않으면 옵션 값을 변경해서 요구사항 충족가능다양한 확장점동작 방식을 커스텀할 수 있는 다양한 확장점 제공기본 동작 방식이 보안 요구사항에 부합하지 않으면 확장 클래스를 만드는 방법으로 충족가능기본 보안기능인증 기능 (Authentication)애플리케이션 사용자의 정당성을 확인인가 기능 (Authorization) -> 자원에 대한 권한 처리애플리케이션 리소스나 처리에 ..

Spring/Security 2018.08.22

학습 // Spring // MVC // Test

업데이트 :: 2018.08.22 스프링 MVC 테스트MockMvcMockMvc 란MockMvc 설정테스트 실행요청 데이터 설정실행 결과 검증실행 결과 출력스프링 MVC 테스트스프링 MVC 컨트롤러의 테스트컨트롤러의 주요역할은 다양컨트롤러의 주요역할요청 경로처리내용의 매핑입력값 검사요청한 데이터의 취득비즈니스 로직 호출다음 이동 화면의 제어정작 컨트롤러 자체에는 단위 테스트가 필요할 만한 비즈니스 로직이 존재하지 않음스프링 MVC의 프레임워크 기능까지 통합된 상태인 통합 테스트의 관점으로 봐야함통합한 상태에서 컨트롤러 테스트E2E(End to End)로 테스트뷰가 생성한 응답 데이터(HTML)의 유효성을 검증할 수 있다는 장점단점애플리케이션이나 데이터베이스를 반드시 기동트랜잭션이 커밋되기 떄문에 테스트를..

Spring/MVC 2018.08.22

학습 // Spring // JDBC // Test

업데이트 :: 2018.08.22 데이터베이스 테스트테스트 데이터소스 설정테스트 데이터 적재테스트 트랜잭션 제어테스트 데이터 검증데이터베이스 테스트테스트 데이터소스 설정테스트 데이터 적재테스트 케이스용 트랜잭션 제어데이터 검증테스트 데이터소스 설정일반적인 웹 애플리케이션에서는 애플리케이션 서버에서 관리하는 데이터 소스를 JNDI를 통해 가져옴JNDI : 디렉터리 서비스에서 제공하는 데이터 및 객체를 발견하고 참고하기 위한 자바 API다.JUnit을 실행할때 그대로 이용시에 오류 발생일반적으로 사용하는 데이터소의@Bean public DataSource dataSource() throws NamingException { JndiTemplate jndiTemplate = new JndiTemplate(); ..

Spring/JDBC 2018.08.22

학습 // Spring // DI // Test

업데이트 :: 2018.08.22 스프링 테스트DI 컨테이너와 빈의 테스트빈의 단위 테스트의존컴포넌트의 모의화DI 컨테이너에서의 빈의 통합테스트스프링 TestContext 프레임워크DI 컨테이너 설정DI 컨테이너의 라이프사이클 제어프로파일 지정테스트용 프로퍼티 값 지정스프링 테스트기능Junit, TestNG 라는 테스팅 프레임워크 사용해서 스프링의 DI 컨테이너 동작트랜젹션을 테스트 상황에 맞게 제어애플리케이션 서버를 사용치 않고 스프링 MVC 동작을 재현테스트 데이터를 적재하기 위해 SQL을 실행RestTemplate을 이용해서 HTTP 요청에 대한 임의의 응답을 보내는 기능DI 컨테이너와 빈의 테스트다음과 같은 애너테이션을 테스트 하는 모듈@Controller@Service@Repository@Com..

Spring/DI & AOP 2018.08.22

학습 // Spring // MVC // Locale

업데이트 :: 2018.08.21 Locale 결정Locale 활용UI를 이용한 Locale 전환LocaleChangeInterceptor 빈정의Locale 전환용 화면요소Locale 결정org.springframework.web.servlet.LocaleResolver 인터페이스스프링 MVC는 Locale정보를 어디서 가져오느냐에 따라 다른 구현 클래스르 가짐구현클래스AcceptHeaderLocaleResolverHTTP 요청의 Accept-Language 헤더에 설정된 Locale 정보를 활용Locale을 변경하고 싶다면 사용자가 브라우저의 언어 설정을 바꾸 수 있음SessionLocaleResolverHTTP 세션에 저장된 Locale 정보를 활용Locale 변경은 LocaleChangeInterc..

Spring/MVC 2018.08.21