Spring/spring framework 기본 및 이론
-
[SPRING] SPEL 스프링 표현식Spring/spring framework 기본 및 이론 2021. 2. 8. 18:17
스프링 EL(Expression Language) 란 객체 그래프를 조회하고 조작하는 기능을 제공하는 언어를 말한다. spEL은 모든 스프링 프로젝트에서 사용하는 expression language로 만들었다. 문법이나 규칙은 배우기가 쉽다. #{"표현식"} ${"프로퍼티"} 이런식으로 특정 객체를 가져와서 문자열처럼 사용할 수 있고, 계산도 할 수 있다. 표현식은 프로퍼티를 포함할 수 있지만, 반대로는 불가능하다. 사용처 @Value 애노테이션 안에 spEL을 쓰면, 아래 필드값에 결과가 주입된다. 스프링 시큐리티의 경우 메소드 시큐리티, @PreAuthorize, @PostAuthorize, @PreFilter, @PostFilter, XML 인터셉터 URL 설정 등에 사용된다. 스프렝 데이터에서 @..
-
[Spring] 스프링 어플리케이션 kill 시키기Spring/spring framework 기본 및 이론 2020. 9. 27. 21:36
spring kill 시키기 SIGTERM 과 SIGKILL 주의해야할 것은 "정상(?) 종료" 되었을 때에 호출된다는 것이다. 무슨 말이냐면 애플리케이션이 종료될 때 일반적인 인터럽트는 SIGTERM 이라는 인터럽트다. 이 인터럽트(SIGTERM)가 발생하면 이벤트로 감지하고 수행하는 작업이라는 것이다. SIGTERM을 정상적인 종료라고 봤을 때, 비정상 종료는 SIGKILL 이다. 리눅스에서 kill -9 옵션과 같이 강제적으로 꺼버리는 것과 윈도우에서 작업관리자가 작업을 끝내버리는 등의 인터럽트가 SIGKILL이다. 위의 예제를 따라했는데 종료 이벤트에 대한 메서드가 호출되지 않았다면 SIGKILL을 이용해서 종료했을 가능성이 높다. 혹시나하고 윈도우 환경에서 커맨드창에 ctrl + c 로 종료해보..
-
[SPRING] mockMvc 유닛 테스트Spring/spring framework 기본 및 이론 2020. 6. 16. 18:44
mockMvc 사용준비 @Autowired SampleController sampleController; private MockMvc mockMvc; @Before public void 기본() throws Exception{ mockMvc = MockMvcBuilders.standaloneSetup(sampleController).build(); } 기본 get 방식 test @Test public void get_sample() throws Exception{ RequestBuilder reqBuilder = MockMvcRequestBuilders.get("/test" + 1) .param("param1", param1) .param("param2", param2) .param("param3", p..
-
[Spring] 스프링 mybatis transactionsSpring/spring framework 기본 및 이론 2020. 6. 2. 18:34
Transactions 마이바티스 스프링 연동모듈을 사용하는 중요한 이유중 하나는 마이바티스가 스프링 트랜잭션에 자연스럽게 연동될수 있다는 것이다. 마이바티스에 종속되는 새로운 트랜잭션 관리를 만드는 것보다는 마이바티스 스프링 연동모듈이 스프링의 DataSourceTransactionManager과 융합되는 것이 좋다. 설정을 하면 스프링에서 트랜잭션 가능 @Transactional 애노테이션과 AOP스타일의 설정 모두 지원한다. 하나의 SqlSession객체가 생성되고 트랜잭션이 동작하는 동안 지속적으로 사용될것이다. 세션은 트랜잭션이 완료되면 적절히 커밋이 되거나 롤백될것이다. 트랜잭션 관리자에 명시된 DataSource가 SqlSessionFactoryBean을 생성할때 사용된 것과 반드시 동일한 ..
-
[Spring] 스프링 mapper 등록하기Spring/spring framework 기본 및 이론 2020. 6. 2. 17:43
mapper 등록하기 xml 설정 매퍼는 다음처럼 XML설정파일에 MapperFactoryBean을 두는 것으로 스프링에 등록된다. MapperFactoryBean은 SqlSessionFactory 나 SqlSessionTemplate가 필요하다. sqlSessionFactory 와 sqlSessionTemplate 프로퍼티를 셋팅하면 된다. 둘다 셋팅하면 SqlSessionFactory가 무시된다. 세션 팩토리 셋은 SqlSessionTemplate이 필요하고 MapperFactoryBean는 팩토리를 사용할것이다. 자바 설정 @Bean public SqlSessionFactory sqlSessionFactory() throws Exception { SqlSessionFactoryBean sqlSess..
-
[Spring] Mybatis SqlSessionFactory 란Spring/spring framework 기본 및 이론 2020. 6. 1. 15:14
SqlSessionFactory SqlSessionFactory는 데이터베이스와의 연결과 SQL의 실행에 대한 모든 것을 가진 가장 중요한 객체다. 이 객체가 DataSource를 참조하여 MyBatis와 Mysql 서버를 연동시켜준다. SqlSessionFactory를 생성해주는 SqlSessionFactoryBean 객체를 먼저 설정하여야 한다. root-context.xml cofing MyBatis는 SQL Mapping 프레임워크로 별도의 설정 파일을 가질 수 있다. src/main/resources에 mybatis-config.xml 파일을 추가 Mybatis에 별도의 설정을 주고 싶으면 위의 파일을 이용 root-context.xml의 sqlSessionFactory에 다음과 같이 confi..
-
[Spring] 스프링 라이프사이클Spring/spring framework 기본 및 이론 2020. 5. 25. 12:04
빈 라이프사이클 관리 인터페이스 기반 InitializingBean 인터페이스 구현한 afterPropertiseSet 메소드 모든 인스턴스의 콜백을 한번에 지정 가능, 스프링과 결합을 해야함 빈 생성시 메소드 실행 init-method 빈의 메서드 하나를 지정해 초기화 콜백으로 사용하겠다고 스프링에 설정 빈이 몇개 안되거나 애플리케이션이 스프링과 결합되지 않게 할 때 유용 인자를 받지 못하는 것이 단점 init 메소드는 private 으로 사용 권고 애너테이션 사용 @PostConstruct 사용법은 init-method 와 동일하고 @PostConstruct 만 메소드 상단에 추가 메소드명은 아무이름이나 사용 가능 init 메소드는 private 으로 사용 권고 @Bean으로 초기화메소드 사용 @Be..
-
[Spring] AOP 포인트컷 표현식Spring/spring framework 기본 및 이론 2020. 5. 15. 14:32
포인트컷 표현식 execution() : 가장 대표적이고 강력한 지시자로, 접근제어자, 리턴 타입, 타입 패턴, 메서드, 파라미터 타입, 예외 타입 등을 조합해서 메서드까지 선택가능한 가장 정교한 포인트컷을 만들수 있다. execution([수식어] 리턴타입 [클래스이름].이름(파라미터) execution(public Integer com.edu.aop.*.*(*)) - com.edu.aop 패키지에 속해있고, 파라미터가 1개인 모든 메서드 execution(* com.edu..*.get*(..)) - com.edu 패키지 및 하위 패키지에 속해있고, 이름이 get으로 시작하는 파라미터가 0개 이상인 모든 메서드 execution(* com.edu.aop..*Service.*(..)) - com.edu...