| 스프링 부트 외부 설정 스프링 부트는 외부 설정을 통해 스프링 부트 어플리케이션의 환경설정 혹은 설정값을 정할 수 있습니다. 스프링 부트에서 사용할 수 있는 외부 설정은 크게 properties, YAML, 환경변수, 커맨드 라인 인수 등이 있습니다. | properties 파일을 통한 설정 properties 파일을 통해서 다음과 같이 스프링 부트 어플리케이션의 외부 설정을 할 수 있습니다. properties의 값은 @Value 어노테이션을 통해 읽어올 수 있습니다. # application.properties # 스프링부트가 구동될 때 자동적으로 로딩하는 프로퍼티 파일 # 스프링부트의 규약 hi.name=hong hi.age=${random.int} //random값을 이용하여 값 랜덤 생성 #..
@Service public class AppRunner implements ApplicationRunner { @Autowired EventService eventService; @Override public void run(ApplicationArguments args) throws Exception { eventService.createEvent(); eventService.publishEvent(); eventService.deleteEvent(); } } 스프링 AOP ( Aspect Oriented Programming ) AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인..
| 스프링 Expression Language : SpEL ● 객체 그래프를 조회하고 조작하는 기능을 제공한다. ● Unified EL과 비슷하지만, 메소드 호출을 지원하며, 문자열 템플릿 기능도 제공한다. ● OGNL, MVEL, JBOss EL 등 자바에서 사용할 수 있는 여러 EL이 있지만, SpEL은 모든 스프링 프로젝트 전반에 걸쳐 사용할 EL로 만들었다. ● 스프링 3.0 부터 지원한다. SpEL 구성 ● ExpressionParser parser = new SpelExpressionParser() ● StandardEvaluationContext context = new StandardEvaluationContext(bean) ● Expression expression = parser.par..
Resource 추상화 Resource 추상화라고 하니까 뭔가 말이 거창하고 어려워 보이네요. 간단하게 의미를 정의해보겠습니다. Resource 추상화는 java.net.URL을 추상화 한 것 입니다. 우선 java.net.URL이 무엇인지를 알아보아야 할 것 같습니다. java.net.URL 이란 우선 URL은 인터넷상의 주소를 표현하는 방법을 의미합니다. URL 클래스는 웹 상에 존재하는 자원에 접근할 때 사용하는 클래스입니다. URL 클래스를 사용하면 위와 같이 간단히 웹상의 자원을 가져올 수 있습니다. 이유 java.net.URL을 왜 추상화 했을까요? 기존 java.net.URL 클래스에는 classpath를 기준으로 resource를 가져오는 방법이 없었다고 합니다. 하지만 classpath,..
Validation 이란? -애플리케이션에서 사용하는 객체들을 검증할 때 사용하는 interface. -실제 검증보단 간단한 검증을 위한 @(어노테이션)을 사용하고 @으로 검증할 수 없는 복잡한 검증 과정이 필요한 경우, 사용자가 검증을 커스텀하기 위해 구현한다. Event public class Event { Integer num; // null 이면 안됨 String title; public Integer getNum() { return num; } public void setNum(Integer num) { this.num = num; } public String getTitle() { return title; } public void setTitle(String title) { th..
1.ApplicationEvnetPublisher 란? ->디자인 패턴 중 하나인 Observer Pattern과 유사한 기능을 합니다. 다시 말해 Spring Framework를 통해 손쉽게 Observer Pattern을 구현하는 것입니다. 2.언제 사용하나요? (관련 글 - https://www.javacodegeeks.com/2012/08/observer-pattern-with-spring-events.html) Observer Pattern을 사용할 때를 떠올리면 됩니다. 이벤트를 발생하는 Publisher와 이를 구독하는 Observer(or Subscriber)사이의 결합도를 낮추면서도 이벤트를 Observer에게 전달을 하고싶을 때 사용하게 됩니다. 3.구조 3.1ApplicationEve..
IoC 컨테이너의 Environment에 대해서 알아보겠습니다. Environment는 ApplicationContext가 가지고있는 기능중 하나로 Application에 등록되어있는 여러 환경들을 제어하고 이용할 수 있도록 도와주는 기능입니다. *ApplicationContext - IoC 컨테이너가 갖추어야 할 기능들을 정의하고 있는 인터페이스로 다른 추가적인 기능들을 상속받고 있습니다 그 중 하나가 바로 EnvironmentCapable입니다. Environment의 기능 1. Profile Profile이란 환경에 따라 필요한 Bean들이 달라질 수 있는데 이것을 쉽게 관리할 수 있도록 도와주는 기능입니다. 예를 들어 Test 환경에서 사용할 Bean들과 Develop중 사용할 Bean들 그리고 ..
Bean의 Scope이란? -Bean의 Scope란 Bean의 생성방식을 결정하는 것입니다. ex) Scope에 따라서 Bean이 Application당 1개만 생성(singleton방식)되거나, 필요할 때마다 새로 생성을 한다던지 하는 그런한 방식을 의미합니다. ※ single ton ? - 해당 애플리케이션 전반에 걸쳐서 해당 bean의 instance가 오직 1개뿐인 경우. 2. Bean의 Scope 종류 Singleton 어플리케이션이 동작하는동안 단 한개만 만들어진다는 의미입니다. Spring에서의 Bean들은 별도의 설정이 없다면 기본적으로 Singleton으로 생성이 됩니다. 즉, 지금까지 생성했던 Bean들은 모두 Singleton으로 주입이 되었던 것입니다. 예제를 통해 조금 더 자세히 ..