- Spring Boot에서 배포관련 설정
- Profile설정에 따라 다른 객체를 주입할 수 있다.
- application.yml 파일에 다음과 같이 기본으로 사용할 profile을 설정할 수 있다.
spring:
profiles:
active: local
my:
address: 192.168.1.100 <----- 공통설정
---
spring:
profiles: local
my:
address: 127.0.0.1 <---- local
---
spring:
profiles: real
my:
address: 192.168.1.120 <---- real
아래와 같이 @Value애노테이션을 이용하여 설정을 읽어왔다.
@Controller
@RequestMapping("/boards")
public class BoardController {
@Value("${my.address}")
private String address;
}
실행시에 프로그램 아규먼트를 줌으로써 원하는 profile로 실행할 수 있다.
java -jar 스프링부트애플리케이션.jar --spring.profiles.active=real
Profile설정에 따라 다른 객체를 주입할 수 있다.
package examples.boot.simpleboard.service;
public interface MyService {
public String getName();
}
ckage examples.boot.simpleboard.service.impl;
import examples.boot.simpleboard.service.MyService;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Service;
@Service
@Profile("real")
public class RealServiceImpl implements MyService {
@Override
public String getName() {
return "real";
}
}
package examples.boot.simpleboard.service.impl;
import examples.boot.simpleboard.service.MyService;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Service;
@Service
@Profile("local")
public class MyServiceImpl implements MyService {
@Override
public String getName() {
return "local";
}
}
@Autowired
MyService myService;
- Spring boot 2.0
- @EnableWebMvc 을 선언 안해줘도 된다. 선언 안해주면 기본으로 사용하는 메시지 컨버터를 사용한다.
- @EnableWebMvc 을 선언하면 메시지 컨버터를 설정 해줘야한다.
- spring boot는 의존성을 추가하면 자동으로 설정이 된다. 웹 프로그래밍과 관련된 내용들이 자동으로 설정된다. 기본적인 메시지 컨버터들도 자동으로 등록된다.
- Hibernate
- 엔티티를 선언하면 Hibernate가 해당 엔티티를 상속하여 프록시 객체를 만들어 오버라이딩 하여 사용한다.
public void configureMessageConverters(List<HttpMessageConverter<?>> converters)
- Spring Boot 2.0에서 hibernate 5를 사용하고 엔티티를 반환하면 Exception이 발생한다. 기존의 컨버터가 변환을 못한다.
- 아래와 같이 컨버터를 생성한다
- 변환하기 위해 jackson이 제공하는 하이버네이트 모듈을 추가한다.
- 이렇게 했을 경우 LocalDateTime이 jsr310형식으로 출력되지 않는다.
- jackson이 제공하는 jsr310모듈을 추가한다.
// https://stackoverflow.com/questions/28862483/spring-and-jackson-how-to-disable-fail-on-empty-beans-through-responsebody
// https://github.com/FasterXML/jackson-datatype-hibernate/issues/87
// https://stackoverflow.com/questions/33727017/configure-jackson-to-omit-lazy-loading-attributes-in-spring-boot
@Override
public void configureMessageConverters(List> converters) {
// http://jsonobject.tistory.com/235 iso8601 형식으로 날짜 정보 출력하기
ObjectMapper mapper = Jackson2ObjectMapperBuilder.json().featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS).modules(new JavaTimeModule()).build();
mapper.registerModule(new Hibernate5Module());
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
MappingJackson2HttpMessageConverter converter =
new MappingJackson2HttpMessageConverter(mapper);
converter.setPrettyPrint(true);
converters.add(converter);
}
- spring boot로 spring mvc 웹 프로그래밍을 하려면 다음의 라이브러리 의존성을 추가하면 됩니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
0 개의 댓글:
댓글 쓰기