springframework 7

[Spring] WebApplicationInitializer

공식 API 문서를 보면 알 수 있듯이 Servlet 3.0 환경의 인터페이스로 기존의 web.xml로 설정하는 것을 프로그래밍으로 설정할 수 있도록 한다. 기존에는 web.xml로 Servlet을 설정 했다면 onStartup 메소드를 오버라이드 해주면서 스프링 설정을 해준다. public class MyWebAppInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext container) { // Create the 'root' Spring application context AnnotationConfigWebApplicationContext rootContext = new Annot..

Spring 2020.06.14

[Spring] 예제로 보는 Aspect Oriented Programming with Spring

AOP : 관점지향프로그래밍 (aspect- oriented programming) Spring AOP : schema-based approach or @AspectJ 1. AOP Concepts Aspect : before , after , throws , finally 같은 것들을 관리해준다 Transaction management - 실제 비즈니스 로직에서는 트랜잭션 코드를 숨길 수 있다 Join point : Aspect가 동작해야 될 포인트 Advice : Join 포인트가 언제 동작할건지 관리 (before, after , around) pointcut : 조인 포인트를 판단하는것 인데 어떻게 포인트 컷을 걸지 포인트컷 하나에 여러개의 조인 포인트가 생길 수 있다 target object : ..

Spring 2020.06.07

[Spring] 예제로 보는 Resources

1. The Resource Interface Spring의 Resource 인터페이스는 Resource에 대한 접근을 추상화하기 위한 인터페이스이다. public interface Resource extends InputStreamSource { //리소스가 있는지 없는지 확인 boolean exists(); //Stream이 열렸는지 체크 boolean isOpen(); //해당 리소스의 url을 가져온다 URL getURL() throws IOException; //해당 리소스의 파일을 가져온다 File getFile() throws IOException; //상대 경로를 통해서 다른 리소스를 가져옴 Resource createRelative(String relativePath) throws IOE..

Spring 2020.05.29

[Spring] 예제로 보는 Environment Abstraction

1. @Profile 어플리케이션 배포할 때 어느 상황에 맞춰서 DB를 붙여야하는데 이럴때 @Profile사용하면 좋다. 보통 @Configuration과 같이쓰인다. @Configuration @Profile("default") public class AppDefaultConfig { @Bean(initMethod = "init", destroyMethod = "destroy") public Connection connection(ConnectionFactory connectionFactory){ return connectionFactory.getConnection(); } } @Configuration @Profile("dev") public class AppDefaultConfig { @Bean(i..

Spring 2020.05.27

[Spring] 예제로 보는 Classpath Scanning and Managed Components

1. @ComponentScan @Configuration @ComponentScan(basePackages = "패키지명") public class AppConfig { } @Component public class B { } basePackages에 해당하는 패키지 안의 @Component 어노테이션이 붙은 class를 scanning하고 자동으로 Bean으로 등록시킨다. 즉, 위의 클래스B 는 xml에 Bean으로 등록을 안해도 Bean으로 등록시켜준다. (단, AppConfig 이 클래스는 xml에 Bean이라고 등록을 해야한다.) 2. @Repository @Repository public class JpaMovieFinder implements MovieFinder { // implementa..

Spring 2020.05.18

[Spring] 예제로 보는 Annotation-based Container Configuration

Are annotations better than XML for configuring Spring? 위의 질문은 Spring 공식 문서에서 해당 파트에서 가장 처음에 등장하는 질문이다. 과연 어노테이션으로 설정하는 것이 XML로 설정하는 것 보다 더 좋은 방법일까?? ① XML 설정 방식의 장점 XML만 보고도 스프링의 설정을 한눈에 확인 가능 설정과 소스코드의 분리 가능 -> POJO(Plain Old Java Object) ② XML 설정 방식의 단점 'XML 헬' 이라고 불릴 정도로 XML이 너무 커진다. 방대해진 XML을 관리하기 힘들어진다. 위의 XML 단점을 보면 어노테이션이 더 나은 방법이 아닌가? 라는 생각이 든다. 하지만! 어노테이션을 사용하면 소스코드와 설정의 분리가 애매해진다. -> ..

Spring 2020.05.12

[Spring] 예제로 공부하는 IoC - Dependecies (제어의 역전 - 의존성)

1. Constructor-based Dependency Injection (생성자 기반의 의존성 주입) package examples; public class ExampleBean { // Number of years to calculate the Ultimate Answer private int years; // The Answer to Life, the Universe, and Everything private String ultimateAnswer; public ExampleBean(int years, String ultimateAnswer) { this.years = years; this.ultimateAnswer = ultimateAnswer; } } 위와 같이 자바의 생성자가 정의될 때 ne..

Spring 2020.04.19