Spring(20)
-
Spring Boot
Spring Boot란 Spring Boot는 자주 사용하는 프로젝트 조합을 미리 만들어 Spring을 더욱 쉽고 간단하게 사용하기 위해 만들어진 Java Framework의 Project입니다. Spring이 지원하는 라이브러리, 하위 프로젝트들이 늘어나면서 무거워지고 초기 설정이 많아 프로젝트 초기 설정을 할 때 많은 어려움이 있었습니다. 이러한 어려움을 해결하기 위해 만들어진 것이 Spring Boot입니다. Spring Boot는 최소한의 초기 Spring 구성으로 가능한 빠르게 시작하고 실행할 수 있도록 설계되었습니다. Spring Boot의 특징 CoC(Convention over Configuration) 웹 어플리케이션을 개발하고자 할 때 일일이 관련 라이브러리를 찾아 추가할 필요 없이 s..
2020.06.09 -
Transaction Template
@Transactional의 한계public class TransactionInvoker { private A1Dao a1dao; private A2Dao a2dao; public void setA1dao(A1Dao dao){ this.a1dao = dao; } public void setA2dao(A2Dao dao){ this.a2dao = dao; } // 외부에서 호출하는 method public void invoke() throws Exception{ doInternalTransaction(); } @Transactional public void doInternalTransaction() throws ..
2020.05.07 -
Spring Singleton
Spring Singleton 패턴의 특징우리가 일반적으로 알고 있는 Java Singleton은 생성자를 private으로 선언하고 참조 변수를 static을 정의하는 것을 이용해 Classloader가 하나의 인스턴스만 만들도록 구현합니다. 하지만 Spring Singleton은 Classloader가 아니라 Spring Container에 의해 구현됩니다. 컨테이너 내에서 특정 클래스에 대해 @Bean, @Component가 정의되면, Spring Container는 그 클래스에 대해 한 개의 인스턴스만 만듭니다. 이 공유 인스턴스는 설정 정보에 의해 관리되고, Bean이 호출될 때마다 Spring은 생성된 공유 인스턴스를 리턴합니다. 여기서 Spring Container에 의해 구현되는게 어떤 ..
2020.05.01 -
@ExceptionHandler
@ExceptionHandler@ExceptionHandler는 @Controller, @RestController가 적용된 빈에서 발생하는 예외를 잡아서 하나의 메서드에서 처리해주는 기능을 합니다.@RestController public class MyRestController { @ExceptionHandler(NullPointerException.class) public Object nullex(Exception e) { System.err.println(e.getClass()); return "myService"; }}위와 같이 @ExceptionHandler를 쓰고 캐치하고 싶은 예외 클래스를 인자로 등록해주면 사용할 수 있습니다. 예제와 같이 사용한다면 My..
2020.04.26 -
AOP
AOP란 프로그래밍을 하다 보면, 공통적인 기능이 많아집니다. 이러한 공통기능을 모듈에 적용하기 위한 방법으로 상속을 이용할 수 있습니다. 하지만 JAVA에서는 다중 상속이 불가능합니다. 그리고 이러한 모듈을 계속 상속받아 공통 기능을 부여하기에는 한계가 있을 뿐더러 보기에도 불편하고 효율성도 떨어집니다. 이를 해결하기 위해 나타난 AOP는 핵심 기능과 공통 기능을 분리해, 공통 기능을 필요로 하는 핵심 기능들에 적용하는 방식입니다. 아래 그림과 같이, 붉은 상자에 있는 공통 부분들을 분리해내는 것입니다.AOP 용어Aspect: 공통 기능의 모듈Advice: Aspect를 구현한 객체JoinPoint: Advice를 적용해야 하는 부분(ex: 필드, 메소드 - spring에서는 메소드만 해당)Pointc..
2020.04.18 -
@Transactional
트랜잭션의 성질원자성: 한 트랜잭션 내에서 실행한 작업들은 하나로 간주합니다.일관성: 트랜잭션은 일관성 있는 데이터베이스 상태를 유지합니다.격리성: 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않도록 격리합니다.지속성: 트랜잭션을 성공적으로 마치면 결과가 항상 저장되어야 합니다.스프링에서 트랜잭션 처리 방법 스프링은 트랜잭션 처리를 지원합니다. 일반적으로 @Transactional을 선언하여 사용하는 선언적 트랜잭션을 사용합니다. 클래스, 메소드 위에 @Transactional이 추가되면, 이 클래스에 트랜잭션 기능이 적용됩니다. 이 객체는 @Transactional이 포함된 메소드가 호출 될 경우, 구현된 PlatformTransactionManager를 사용하여 트랜잭션을 시작하고, 정상 여부에 ..
2020.04.17