전체 글
-
스프링 데이터 - 2 (스프링 부트 활용 - 8)Programming/Spring Boot 2020. 3. 12. 01:37
1. ORM, JPA, 스프링 데이터 JPA 개요 - ORM (Object - Reltional - Mapping) 와 JPA (Java Persistence API) 객체와 릴레이션을 맵핑(ORM)할 때 발생하는 개념적 불일치를 해결하는 프레임워크(JPA) - 스프링 데이터 JPA JPA 표준 스펙을 아주 쉽게 사용할 수 있게 스프링 데이터로 추상화 시켜 놓은 것 Spring Data JPA -> JPA -> Hibernate -> DataSource 2. Spring-Data-JPA 연동 1) JPA, PostgreSql 의존성 추가 1-1) 프로퍼티에 디비 연결 설정 2) @Entity 클래스 만들기 getter, setter, equals, hashCode 오버라이드 @Id : 아이디로 사용 @G..
-
스프링 데이터 - 1 (스프링 부트 활용 - 7)Programming/Spring Boot 2020. 3. 11. 15:50
1. 인-메모리 데이터베이스 - H2(추천 : 콘솔 때문에), HSQL, Derby - 기본 연결 정보 (URL : "testdb", username: "sa", password : "") 1) H2, JDBC 를 의존성에 추가 2) Runner 코드를 작성 Spring-JDBC가 클래스 패스에 있으면 자동 설정이 필요한 빈(DataSource, JdbcTemplate)들을 설정해줌 @Component public class H2Runner implements ApplicationRunner { @Autowired DataSource dataSource; @Autowired JdbcTemplate jdbcTemplate; @Override public void run(ApplicationArguments..
-
스프링 웹 MVC - 2 (스프링 부트 활용 - 6)Programming/Spring Boot 2020. 3. 10. 20:10
1. ThymeLeaf 동적으로 컨텐츠를 생성해서 응답으로 보내야 하는 경우 템플릿 엔진을 사용 1) 테스트 생성 @RunWith(SpringRunner.class) @WebMvcTest(SampleController.class) public class SampleControllerTest { @Autowired MockMvc mockMvc; @Test public void hello() throws Exception { mockMvc.perform(get("/hello")) .andExpect(status().isOk()) .andDo(print()) .andExpect(view().name("hello")) .andExpect(model().attribute("name", is("hongchan"))..
-
스프링 웹 MVC - 1 (스프링 부트 활용 - 5)Programming/Spring Boot 2020. 3. 10. 00:44
- 아무런 설정 없이 스프링 웹 MVC를 바로 사용할 수 있는 것은 AutoConfigure 덕분 - WebMvcConfigurer 을 구현하여 스프링 자동 설정에 더해서 여러 설정을 입맛대로 변경 가능 1. HttpMessageConverters - 스프링 프레임워크에서 제공하는 인터페이스 - HTTP 요청 본문 객체로 변경하거나, 객체를 HTTP 응답 본문으로 변경할 때 사용 {"username":hongchan, "password":"123"} User - @RequestBody, @ResponseBody와 함께 쓰임 1) 테스트 코드 작성 @Test public void createUser_JSON() throws Exception { String userJson = "{\"username\":\..
-
로깅, 테스트, Devtools (스프링 부트 활용 - 4)Programming/Spring Boot 2020. 3. 9. 20:01
1. 로깅 - 로깅 퍼사드 vs 로거 Commons Logging, SLF4j / JUL, Log4J2, Logback 로깅 퍼사드는 실제 로깅을 하는 것이 아니라 로거 기능을 추상화한 인터페이스임 로깅 퍼사드의 장점 : 로깅 퍼사드 밑의 로거를 바꾸어 낄 수 있음 -> 주로 프레임워크는 퍼사드를 이용해 개발함 만약 어떤 프레임워크에서 특정 로거를 쓴다면, 해당 프레임워크를 사용하는 모든 어플리케이션은 해당 로거를 사용해야 함 기존에는 콘솔 출력만 하는데, 다음 설정으로 로그 파일 저장 가능 // 둘 중 하나만 설정 logging.path=logs// 디렉토리 설정 logging.file=logfile// 파일 설정 로그 파일은 10MB 마다 롤링이 되고 나머지는 아카이브가 됨. - 로그로 남기기 pri..
-
외부 설정과 프로파일 (스프링 부트 활용 - 3)Programming/Spring Boot 2020. 3. 9. 17:18
1. 외부 설정 테스트를 실행할 때 먼저 실제 코드에 있는 것들을 클래스 패스(main/java, main/resources 디렉토리)로 등록하고 빌드, 이후 테스트 코드 부분이 등록(test/java, test/resources)되고 빌드됨 따라서, 테스트 application.properties 에 사용하고자 하는 것이 없으면 에러남 -> 1. 테스트 코드의 application.properties에 없는 것들 추가하기 2. 테스트 코드의 application.properties 삭제하기 3. 이름을 마음대로 지정하고(test.properties), 소스코드 내에서 등록하기 @TestPropertySource(locations = "classpath:/test.properties") - 프로퍼티 우선..
-
Spring Application (스프링 부트 활용 - 1)Programming/Spring Framework 주요 개념 2020. 3. 9. 01:22
1. ApplicationListener Application Context가 만들어지기 전에 실행되느냐 이후에 실행되느냐에 따라서 등록 방법이 달라짐 ApplicationStartingEvent 는 Application Context가 만들어지기 전에 실행됨. 따라서 빈으로 등록하지 말고 addListener()로 추가해야 함 이외에는 빈으로 등록하면 됨 @Component public class SampleListener implements ApplicationListener { @Override public void onApplicationEvent(ApplicationStartedEvent applicationStartedEvent) { System.out.println("hongchan"); }..
-
내장 웹 서버와 응용 (스프링 부트 원리 - 2)Programming/Spring Boot 2020. 3. 8. 20:29
1. 내장 웹 서버 이해 Spring Boot는 서버가 아니다! 내장 Servlet 컨테이너(톰켓)를 쉽게 사용해 줄 수 있는 툴! 톰켓, 제티, 네티, 언더토우 등이 서버임 톰켓이 만들어지고 실행되는 것도 자동 설정의 일부임 (서블릿 컨테이너를 만들고 서블릿을 등록하는 일이 나누어져 실행됨) 2. 컨테이너와 서버 포트 -다른 서블릿 컨테이너(제티)로 변경 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-jetty - 프로퍼티 설정으로 웹 서버 사용 유무, 포트 변경가능(server.port) ..