본문 바로가기

분류 전체보기

(37)
[IntelliJ] Gradle 대신 자바 직접 실행 설정 - 빌드, 실행, 배포 - 빌드도구 - Gradle - 다음을 사용하여 빌드 및 실행 : IntelliJ IDEA - 다음을 사용하여 테스트 실행 : IntelliJ IDEA 초기에는 Gradle로 실행하는 것으로 설정이 되어 있기 때문에 실행속도가 느리다. 설정을 변경해주면 자바로 바로 실행하기 때문에 실행속도가 빨라진다.
[Spring boot] 라이브러리 Dependancies Spring Web : Spring MVC를 사용하여 RESTful을 포함한 웹 애플리케이션을 구축. Apache Tomcat을 기본 내장형 컨테이너로 사용. Thymeleaf : 웹 및 독립 실행형 환경 모두를 위한 최신 서버 측 Java 템플릿 엔진. HTML을 브라우저에서 정적 프로토타입으로 올바르게 표시할 수 있다. Spring Data JPA : Spring Data 및 Hibernate를 사용하여 Java Persistence API를 사용하여 SQL 저장소에 데이터를 유지. H2 Database : 작은 설치 공간(2MB)으로 JDBC API 및 R2DBC 액세스를 지원하는 빠른 메모리 내 데이터베이스를 제공. 내장형 및 서버 모드와 브라우저 기반 콘솔 응용 프로그램을..
[Spring] AOP AOP : Aspect Oriented Programming AOP가 필요한 상황 - 메소드의 호출 시간을 측정하고 싶을 때 - 회원가입 시간, 회원조회 시간을 측정하고 싶을 때 - 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) package hello.hellospring.aop; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; @Component @Aspect public c..
[JPA] JPA, 스프링 데이터 JPA JPA (Java Persistence API) : 기존의 반복 코드와 기본적인 SQL을 직접 만들어서 실행해주기 때문에 편리하다. 개발 생산성을 크게 높일 수 있다. SQL과 데이터 중심 설계 -> 객체 중심의 설계 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' build.gradle 파일에 jpa 라이브러리 추가 * 기존에 사용하던 jdbc 라이브러리는 제거해도 된다. spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=none application.properties에 JPA 설정 추가 show-aql : JPA가 생성하는 SQL 출력 ddl-auto : create를 사용..
[Spring] @SpringBootTest, @Transactional @SpringBootTest @Transactional class MemberServiceIntegrationTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; ... @SpringBootTest : Test 클래스에 @SpringBootTest 를 붙여주면 스프링 컨테이너와 테스트를 함께 실행한다. @Transactional : 테스트 시작 전에 트랜잭션을 시작하고 테스트 완료 후에 항상 롤백한다. @Transactional를 사용하면 @BeforeEach, @AfterEach 애노테이션을 사용하지 않아도 DB에 데이터가 남지 않아 다음 테스트에 영향을 주지 않는다. * 트랜잭션 (tran..
[Spring] jdbc.datasource.DataSourceUtils가 import 되지 않는 오류 리소스를 추가하지 않아 발생한 오류 build.gradle 파일의 dependencies 안에 하단 코드를 추가한다. implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.h2database:h2' gradle refresh를 해주면 리소스가 추가되어 정상적으로 import된다.
[DB] H2 데이터베이스 설치 https://www.h2database.com/html/download-archive.html Archive Downloads www.h2database.com 1.4.200 버전을 설치한다. C:\Program Files (x86) λ cd H2\bin\ C:\Program Files (x86)\H2\bin λ ls h2.bat h2.sh* h2-1.4.200.jar h2w.bat C:\Program Files (x86)\H2\bin λ h2.bat 설치 경로로 이동하여 bin에서 h2.bat 실행 연결 버튼을 눌러 실행할 수 있다. * 최초 실행 시 데이터베이스 파일이 생성된다. 사용자 - user 폴더에 test.mv.db 파일이 생성되었는지 확인 이후부터는 충돌이 날 수 있기 때문에 JDBC U..
[Spring] 스프링 빈과 의존관계 DI (Dependency Injection) : 의존성 주입. 객체 의존관계를 외부에서 넣어주는 것. @Autowired : 생성자에 @Autowired가 있으면 스프링이 연관된 객체를 스프링 컨테이너에서 찾아서 넣어준다. 스프링 빈을 등록하는 방법 1. 컴포넌트 스캔과 자동 의존관계 설정 @Component : @Component 애노테이션이 있으면 스프링 빈으로 자동등록된다. @Controller, @Service, @Repository : @Component가 애노테이션 안에 포함되어 있기 때문에 스프링 빈으로 자동등록된다. 스프링 컨테이너에 스프링 빈을 등록할 때 기본적으로 싱글톤으로 등록한다. -> 같은 스프링 빈이면 모두 같은 인스턴스 * 싱글톤 : 유일하게 하나만 등록해서 공유 2. 자바 ..
[Spring] @AfterEach, @BeforeEach @AfterEach public void afterEach() { repository.clearStore(); } @AfterEach : 여러 테스트를 한번에 실행하면 직전 테스트의 결과가 DB에 남아 오류가 발생할 수 있다. @afterEach를 사용하면 각 테스트가 종료될 때마다 DB에 저장되어 있는 데이터를 삭제한다. @BeforeEach public void beforeEach() { memberRepository = new MemoryMemberRepository(); memberService = new MemberService(memberRepository); } @BeforeEach : 각 테스트 실행 전에 호출된다. 테스트 간에 영향이 가지 않도록 항상 새로운 객체를 생성하고 의존관계를 새..
[Spring] 스프링 웹 개발 기초 (MVC, @ResponseBody) MVC : Model, View, Controller @ResponseBody @Controller public class HelloController { @GetMapping("hello-string") @ResponseBody public String helloString(@RequestParam("name") String name) { return "hello " + name; } } @ResponseBody를 사용하면 viewResolver를 사용하지 않고 http의 body에 문자 내용을 그대로 반환한다. * viewResolver : 컨트롤러에서 리턴 값으로 문자를 반환하면 viewResolver가 화면을 찾아서 처리한다. {"name":"spring"} @ResponseBody를 사용하고 객..