Spring/개념(13)
-
[토비의 스프링1] 7.4 인터페이스 상속을 통한 안전한 기능 확장
예시 - 원칙적으로 권장되지 않지만 때로는 서버가 운영중인 상태에서 서버를 재시작 하지 않고 긴급하게 애플리케이션이 사용중인 SQL을 변경해야 할 상황 운영중에 예상하지 못한 SQL의 오류를 발견했다거나, 특별한 이유로 SQL조건이나 참조 테이블을 급하게 변경해야 할 경우 기존 설계 - SqlService 구현 클래스들은 초기에 리소스부터 SQL 정보를 읽어오면 이를 메모리에 두고 그대로 사용한다. SQL 매핑정보 파일을 변경했다고 해서 메모리상의 SQL 정보가 갱신되지 않는다. 굳이 방법이 있다면 재시작이나 웹 애플리케이션을 리로딩해서 SqlService빈을 초기화 시키는것 뿐... 1. DI와 기능의 확장 DI의 가치를 제대로 얻으려면 먼저 DI에 적합한 오브젝트 설계가 필요 DI를 의식하는 설계 초..
2022.06.20 -
Maven scope
scope dependency 하위에 포함되는 항목 해당 dependency가 포함되는 범위에 대한 타입 scope 종류 compile : 기본 scope. 미입력시에도 기본 적용 모든 상황에서 포함됨 provided : compile과 유사하게 모든 상황에서 수행된다 하지만, 다른 외부 컨테이너에서 기본 제공되는 API인경우 provided로 지정 시 마지막 패키징할 때 포함되지 않음 예를 들면 tomcat에서 기본적으로 servlet api를 제공하기 때문에 servlet api를 provided로 지정하면 패키징시 제외된다. runtime : 컴파일 시에는 불필요 실행시에 필요한 경우. 런타임 및 테스트 시 classpath에 추가 되지만, 컴파일시에는 추가 되지 않음 test : 테스트시에만 사용..
2022.06.20 -
[토비의 스프링] AOP 용어
타깃 : 부가기능을 부여할 대상 ( 핵심 기능을 담은 클래스일 수도 있지만, 경우에 따라서는 다른 부가기능을 제공하는 프록시 오브젝트 일수도 있다. ) 어드바이스 : 어드바이스는 타깃에게 제공할 부가기능을 담은 모듈. 어드바이스는 오브젝트로 정의하기도 하지만 메소드 레벨에서 정의할 수도 있다. ( 종류가 많다 ) 조인 포인트 : 어드바이스가 적용될 위치. 스프링의 프록시 AOP에서 조인 포인트는 메소드의 실행단계 뿐이다. 타깃 오브젝트가 구현한 인터페이스의 모든 메소드는 조인 포인트가 된다. 포인트 컷 : 어드바이스를 적용할 조인 포인트를 선별하는 작업 또는 그 기능을 정의한 모듈. 스프링 AOP의 조인 포인트는 메소드의 실행이므로 스프링의 포인트컷은 메소드를 선정하는 기능을 갖고 있다. 그래서 포인트컷..
2022.06.02 -
[토비의 스프링1] 서비스 추상화
객체지향적인 코드는 다른 오브젝트의 데이터를 가져와서 작업하는 대신 데이터를 갖고있는 다른 오브젝트에게 작업을 해달라고 요청한다. 오브젝트에게 데이터를 요구하지 말고 작업을 요청하라는 것이 객체지향 프로그래밍의 가장 기본이 되는 원리이다. JdbcTemplate과 트랜잭션 동기화 public void upgradeLevels() throws Exception { TransactionSynchronizationManager.initSynchronization(); Connection c = DataSourceUtils.getConnection(dataSource); c.setAutoCommit(false); try { List users = userDao.getAll(); for(User user : us..
2022.05.12 -
[토비의 스프링2] 1 IoC 컨테이너와 DI
1 IoC 컨테이너 : 빈 팩토리와 애플리케이션 컨텍스트 스프링 애플리케이션은 오브젝트의 생성과 관계설정, 사용, 제거 등의 작업을 애플리케이션 코드 대신 독립된 컨테이너가 담당한다. 이를 컨테이너가 코드 대신 오브젝트에 대한 제어권을 갖고 있다고 해서 IoC라고 부른다. 스프링 IoC 컨테이너는 일반적으로 애플리케이션 컨텍스트를 말한다. 스프링의 빈 팩토리와 애플리케이션 컨텍스트는 각각 기능을 대표하는 BeanFactory와 ApplicationContext라는 두 개의 인터페이스로 정의 되어있다. ApplicationContext 인터페이스는 BeanFactory 인터페이스를 상속한 서브 인터페이스다. ( 컨텍스트란? ) * 실제로 IoC 컨테이너라고 말하는 것은 ApplicationContext 인..
2022.05.11 -
디자인 패턴 정리
템플릿 메서드 패턴 - 상속을 통해 기능을 확장해서 사용하는 부분이다. 변하지 않는 부분은 슈퍼클래스에 두고 변하는 부분은 추상 메소드로 정의해둬서 서브클래스에서 오버라이드하여 새롭게 정의해 쓰도록 하는것이다. 단점 : 접근 제한이 많다. 로직마다 상속을 통해 클래스를 만들어야 한다. 관계에 대한 유연성이 떨어진다. 전략 패턴 - 개방 폐쇄 원칙(OCP)를 잘 지키는 구조이면서도 템플릿 메소드 패턴보당 유연하고 확장성이 뛰어난 것이, 오브젝트를 아예 둘로 분리하고 클래스 레벨에서는 인터페이스를 통해서만 의존하도록 만드는 전략 패턴이다. OCP 관점에 보면 확장에 해당하는 변하는 부분을 별도의 클래스로 만들어 추상화된 인터페이스를 통해 위임하는 방식이다. 필요에 따라 컨텍스트는 그대로 유지하면서 전략을 바..
2022.04.27