Spring
-
[김영한 스프링] 03. 회원 도메인Spring/스프링 핵심 원리 - 기본편 2023. 4. 5. 21:36
회원 도메인 요구사항 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) Grade.java package hello.core.member; public enum Grade { BASIC, VIP } Member.java main/java/hello.core/member/Member 생성 생성자 생성 package hello.core.member; public class Member { private Long id; private String name; private Grade grade; public Member(Long id, String name, Grade grade) { this.i..
-
[김영한 스프링] 02. 프로젝트 생성Spring/스프링 핵심 원리 - 기본편 2023. 4. 5. 02:03
스프링 프로젝트 생성 1. 스프링 부트 스타터 사이트(https://start.spring.io) 이동 2. Group : hello 3. Artifact, Name : core 4. 스프링부트 3.x는 자바17, 스프링부트 2.x는 자바11 5. GENERATE버튼으로 프로젝트 다운로드 프로젝트 열기 다운받은 프로젝트 파일에서 build.gradle 열기 설정 변경 1. 설정 들어가서 gradle 검색 2. 빨간 박스안 내용으로 변경 실행 CoreApplication 실행 출처 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8..
-
[김영한 스프링] 01. 객체 지향 설계와 스프링Spring/스프링 핵심 원리 - 기본편 2023. 4. 4. 23:06
스프링 부트 스프링을 편리하게 사용할 수 있도록 지원 Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨 손쉬운 빌드 구성을 위한 starter 종속성 제공 스프링과 3rd parth(외부) 라이브러리 자동 구성 스프링의 진짜 핵심 스프링은 자바 언어 기반의 프레임워크 자바 언어의 가장 큰 특징 - 객체 지향 언어 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크 객체 지향 특징 추상화 캡슐화 상속 다형성 객체 지향 프로그래밍 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체..
-
[김영한 스프링] 19. AOPSpring/스프링 입문 2023. 4. 1. 23:42
시간 측정 로직을 추가할 곳이 많으면 많을수록 유지보수 불가능 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; @Aspect @Component public class TimeTraceAop { @Around("execution(* hello.hellospring..*(..))") public Object execute(ProceedingJoinPoint joinPoint) thr..
-
[김영한 스프링] 18. 스프링 데이터 JPASpring/스프링 입문 2023. 4. 1. 22:12
package hello.hellospring.repository; import hello.hellospring.domain.Member; import org.springframework.data.jpa.repository.JpaRepository; import java.util.Optional; public interface SpringDataJpaMemberRepository extends JpaRepository, MemberRepository { @Override Optional findByName(String name); } hello.hellospring/repository/SpringDataJpaMemberRepository 생성 JpaRepository를 받고 있으면 구현체를 자동으로 만들..
-
[김영한 스프링] 17. JPASpring/스프링 입문 2023. 3. 31. 00:09
implementation 'org.springframework.boot:spring-boot-starter-data-jpa' 추가 후 오른쪽 코끼리 클릭 spring.jpa.show-sql=true : jpa가 실행하는 sql을 볼 수 있음 spring.jpa.hibernate.ddl-auto=none : 자동으로 테이블을 만들어 주는 기능 끔 @Entity 추가함으로써 jpa가 관리하는 entity가 됨 @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - pk 생성을 자동으로 해줌 package hello.hellospring.repository; import hello.hellospring.domain.Member; import javax.pers..
-
[김영한 스프링] 16. 스프링 JdbcTemplateSpring/스프링 입문 2023. 3. 30. 22:05
package hello.hellospring.repository; import hello.hellospring.domain.Member; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.simple.SimpleJdbcInsert; import javax.sql.DataSource; import java.sql.ResultSet; import java.sql.SQLException; im..
-
[김영한 스프링] 15. 스프링 통합 테스트Spring/스프링 입문 2023. 3. 30. 00:37
test의 MemberServiceTest를 복붙해서 클래스명을 MemberServiceIntegrationTest로 변경 '회원가입'과 '중복_회원_예외'만 남기고 코드 삭제 @SpringBootTest와 @Autowired 추가 데이터 삭제 회원가입만 실행 정상적으로 데이터 입력됨 한번 더 실행하면 에러 발생함 회원가입에서 "String"을 입력시키는데 이미 데이터베이스에 String이 들어있으니 에러발생 @Transactional을 추가 테스트가 실행 되면서 데이터를 insert하더라도 테스트가 끝나면 db 롤백함 테스트 실행하고 데이터 지우고 테스트 실행하고 데이터 지우고 하는 과정 없이 바로바로 테스트 가능함