본문 바로가기

spring19

Spring - ApplicationEventPublisher ApplicationContext 은 여러가지 인터페이스를 상속받는다. 그 중 ApplicationEventPublisher 를 알아보자. 이벤트 프로그래밍에 필요한 인터페이스를 제공한다. ApplicationEventPublisher 옵저버 패턴 구현체로, 이벤트 기반 프로그래밍을 할 때 유용하다. 간단한 예제는 아래와 같다. 1) 이벤트를 만든다. 2) 이벤트를 Listener 에 등록시킨다. 3) AppRunner 에서 이벤트를 발생시키고, 위에서 등록한 이벤트 리스너가 이벤트를 작동시키도록 한다. 1) 이벤트 생성 public class BlueEvent extends ApplicationEvent { private int data; public int getData() { return data;.. 2021. 1. 12.
Spring - Messagesource ApplicationContext 은 여러가지 클래스를 상속받는다. 그 중 MessageSource 를 알아보자. 여러 메시지 기능(다국어, 캐시 등)을 제공한다. MessageSource Spring은 다국어 기능을 지원한다. MessageSource 는 빈으로 등록되어 있는 클래스이기 때문에, @Autowired 로 의존성 주입이 가능하여 바로 끌어다 사용할 수 있다. 여기서 getMessage() 메소드를 사용하면 된다. 다국어 메시지 설정은 프로퍼티 파일을 생성하면 된다. messages_ko_KR.properties greeting=안녕 {0} messages.properties greeting=Hello {0} Runner로 테스트를 해보자. @Component public class AppR.. 2021. 1. 12.
Spring - 프로파일, 프로퍼티 Spring IoC - Enviornment ApplicationContext 가 가진 속성 중 Enviornment 를 알아보자. 간단히 말하면 프로파일 (빈들의 모음), 프로퍼티 (환경 설정) 설정을 도와준다. 프로파일 ApplicationContext 는 spring IoC 최상위 클래스인 BeanFactory 뿐만 아니라 EnvironmentCapable 도 상속받는다. 이 외에도 여러가지 클래스를 상속받는다. 따라서 getEnviornment() 메소드를 사용할 수 있다. Enviornment 에서 프로파일을 받아올 수 있는데, 프로파일이란 빈들이 모인 그룹을 말한다. Enviornment의 역할은 활성화(active) 할 프로파일을 확인하고 설정을 도와주는 것이다. 따라서 사용하고 싶은 특정 .. 2021. 1. 11.
Spring IoC - @Autowired @Autowired 의존성을 주입할 때 사용한다. 필드, 세터, 생성자 위에 붙여 의존성을 주입할 수 있다. A클래스에 B클래스를 연결지어 보자(의존성을 주입해보자) 이 때, A는 빈에 등록되었고, B는 빈에 등록되어있지 않다. A클래스의 생성자에 @Autowired를 붙일 경우, 주입하려는 B클래스가 빈에 등록되어 있지않으므로 바로 에러가 난다. 파라미터로 받는 B클래스가 빈 공장에서 찾을 수 없으므로 생성자가 생성되지 않아 A클래스가 만들어지지 않기 때문이다. A의 필드나 세터 위에 붙일 경우도 에러가 난다. 하지만 이 때는 required 옵션으로 에러발생은 방지할 수 있다. @Autowired(required = false) required 기본값은 true 이다. 생성자에는 이 옵션을 넣어봐도 .. 2021. 1. 10.
Spring PSA 예시 Spring PSA Portable Service Abstraction PSA는 잘 만들어진 인터페이스라고 할 수 있다. 각각의 개발자들이 만든 코드는 확정성이 좋지 못하거나 특정 기술에 특화되어 있을 수 있다. 개발자들이 공동으로 쓰는 모듈은 그 서비스가 추상화되어 각 개발자들이 통일적, 효율적, 그리고 보다 쉬운 코드 개발이 가능하다. 스프링 웹 MVC를 예를 들어보자. (Model View Controller) @Controller 애노테이션이 붙은 클래스에서 @GetMapping, @PostMapping 등을 이용해서 원하는 url을 매핑시킬 수 있다. 한편 @RequestMapping 어노테이션을 붙인 클래스에서 @RequestMapping(method=RequestMethod.GET), @Re.. 2021. 1. 9.
Spring AOP 예제 Spring AOP 스프링의 트라이앵글로 IoC, AOP, PSA 가 있다. 그 중 AOP를 공부해보자. AOP Aspect Oriented Programming, 관점지향 프로그래밍 OOP 는 같은 종류의 대상을 최상위 클래스로 부터 아래 클래스를 긴밀한 관계(추상화, 캡슐화, 상속, 다형성)로 설계를 지향하는 프로그래밍이라면, AOP는 종류가 다른 클래스 사이에서 효율적인 코드 설계(중복 제거 등)를 지향하는 프로그래밍이다. AOP를 구현하는 방법은 아래와 같다. sample.java 를 컴파일하여 sample.class 가 되는 사이에 AOP를 구현한다. (AspectJ) 바이트코드를 조작하여 sample.java ➞ sample.class 로 컴파일 후 실행시키는 과정에서 메모리에서 AOP를 구현.. 2021. 1. 8.
[Spring Boot] 6 - 배너, SpringApplication 스프링 공식 문서와, 이를 해설해 준 백기선 유투브를 참고 하였습니다. 링크는 맨 아래 있습니다. public static void main(String[] args) { SpringApplication.run(MySpringConfiguration.class, args); } INFO 로깅 메시지가 보입니다. INFO 외 로그레벨을 보려면, Log Levels 을 참고합니다. resources 폴더 아래에 application.properties 파일을 생성합니다. logging.level.root=warn logging.level.org.springframework.web=debug logging.level.org.hibernate=error원하는 설정을 입력하면, 로그 레벨을 설정할 수 있습니다. .. 2020. 3. 25.
[Spring Boot] 4 자동설정, @SpringBootApplication 이 글은 스프링 공식문서를 보며 강의해주신 백기선 유투버님의 강의를 듣고 요약한 글입니다. Spring Boot 003 내용과 이어집니다. 3.2 XML Configuration resources/application.xml 에 Bean 을 설정해서 UserService를 등록해봅시다. main 메서드가 있는 클래스 위에 @ImportResource("application.xml")를 설정해주면, 성공적으로 bean을 찾을 수 있습니다. 4 Auto-Configuration @SpringBootApplication 은 jar 의존성에 근거해서 자동으로 스프링 application을 설정할 수 있습니다. 아래 3개를 포함하고 있습니다. @SpringBootConfiguration @EnableAutoCon.. 2020. 3. 23.
[Spring] Java Spring 기본 Spring Core 1. Spring 1) Spring Framework 엔터프라이즈급(좀 큰) app을 구축할 수 있는 가벼운 솔루션, 원스탑숍(One-Stop-Shop) 모듈화가 잘 되어 있습니다. IoC 컨테이너 입니다. 트랜잭션을 선언적으로 관리할 수 있습니다. 완전한 기능을 갖춘 MVC framework를 제공합니다. AOP를 지원합니다. 스프링은 도메인 논리코드와 쉽게 분리될 수 있는 구조로 되어 있습니다. One-Stop-Shop : 모든 과정을 한꺼번에 해결하는 상점. 2) 프레임워크 모듈 Spring 프레임워크는 약 20개의 모듈로 구성되어 있습니다. 필요한 모듈만 가져다 사용 가능합니다. 3) AOP와 Instrumentation spring-AOP : AOP alliance와 호환되.. 2020. 1. 4.