일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- db
- spring
- pointcut
- JPQL
- 그리디
- transaction
- jpa
- 인프런
- 김영한
- 스프링 핵심 원리
- Exception
- http
- 스프링 핵심 기능
- Android
- springdatajpa
- 알고리즘
- 스프링
- 백준
- SpringBoot
- Servlet
- Spring Boot
- QueryDSL
- AOP
- JDBC
- java
- 자바
- Greedy
- Thymeleaf
- kotlin
- Proxy
- Today
- Total
목록스프링 (13)
개발자되기 프로젝트
ConnectionConst package hello.jdbc.connection; public abstract class ConnectionConst { public static final String URL = "jdbc:h2:tcp://localhost/~/dbtest"; public static final String USERNAME = "sa"; public static final String PASSWORD = ""; } DB에 접속하는데 필요한 기본 정보를 편리하게 사용하도록 상수로 만들었다. 이 때 해당 클래스는 객체로 생성하지 못하도록 abtract로 막아두었다. DBConnectionUtil package hello.jdbc.connection; import lombok.extern.s..
내부 호출을 해결하는 가장 간단한 방법은 자기 자신을 의존관계 주입 받는 것. 오? 1. 자기 자신 주입 @Slf4j @Component public class CallServiceV1 { private CallServiceV1 callServiceV1; /** * 생성자 주입은 순환 사이클을 만들기 때문에 실패한다. * 수정자(setter) 주입도 스프링 부트 2.6붙 막힘 --> 순환참조 금지 * 순환참조를 해결하기 위해 application.properties에 아래 파일 추가 * spring.main.allow-circular-references=true */ @Autowired public void setCallServiceV1(CallServiceV1 callServiceV1) { this.c..
1. 일반적인 스프링 빈 등록 public class BasicTest { @Test void basicConfig (){ //스프링 컨테이너 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(BasicConfig.class); //A는 빈으로 등록됨. A a = applicationContext.getBean("beanA", A.class); a.helloA(); //B는 스프링 빈으로 등록되지 않음. Assertions.assertThrows(NoSuchBeanDefinitionException.class, () -> applicationContext.getBean(B.class)); } @Slf4j @Conf..
1. 일반적인 스프링 빈 등록 @Bean 이나 컴포넌트 스캔으로 스프링 빈을 등록하면, 스프링은 대상 객체를 생성하고 스프링 컨테이너 내부의 빈 저장소에 등록한다. 그리고 이후에는 스프링 컨테이너를 통해 등록한 스프링 빈을 조회해서 사용하면 된다. 2. BeanPostProcessor 스프링이 빈 저장소에 등록할 목적으로 생성한 객체를 빈 저장소에 등록하기 직전에 조작하고 싶다면 빈 후처리기를 사용하면 된다. 빈 포스트 프로세서( BeanPostProcessor )는 번역하면 빈 후처리기인데, 이름 그대로 빈을 생성한 후에 무언가를 처리하는 용도로 사용한다. 빈 후처리기 기능 객체를 조작할 수도 있고, 완전히 다른 객체로 바꿔치기 하는 것도 가능하다. 3. 빈 후처리기 과정 생성: 스프링 빈 대상이 되는..
1. 배경 테스트 하기 위해 매 번 회원가입하고, 글쓰고 댓글쓰기 너무 귀찮다....ㅡㅡ 차라리 스프링이 올라갈 때 미리 데이터를 넣어놓자. 2. InitMember 회원 2명, 글 2개, 댓글 3개를 추가해보자. InitMember라는 클래스를 생성했다. @Component로 지정하여 스프링 빈으로 등록하자. @PostConstruct는 빈 생성 이후에 실행되는 메서드를 지정한다. 모든 데이터 변경은 Transaction내에서 실행되어야 한다. 객체간에 연관관계도 모두 맺어주었다. 주의사항 Init, InitService는 예약어이다 @Component @RequiredArgsConstructor public class InitMember { private final MemberService membe..
1. 테스트 요구사항 상품 주문이 성공해야 한다. 상품을 주문할 때 재고 수량을 초과하면 안 된다. 주문 취소가 성공해야 한다 2. 상품 주문 테스트 @SpringBootTest @RunWith(SpringRunner.class) @Transactional public class OrderServiceTest { @Autowired EntityManager em; @Autowired OrderService orderService; @Autowired OrderRepository orderRepository; @Test public void 상품주문() throws Exception{ //given Member member = new Member(); member.setName("회원1"); member...
1. OrderRepository @Repository @RequiredArgsConstructor public class OrderRepository { private final EntityManager em; public void save(Order order){ em.persist(order); } public Order findOne(Long id){ return em.find(Order.class, id); } //public List findAll(OrderSearch orderSearch){ //} } 2. OrderService 배송 주소는 간단하게 회원의 주소로 대체 다른 엔티티들은 save를 호출하지 않는데, order만 save를 했다? 왜??? Cascade 옵션 때문! OrderI..
1. 구현 기능 상품 주문 주문 내역 조회 주문 취소 2. 순서 주문 엔티티, 주문상품 엔티티 개발 주문 repository 개발 주문 service 개발 주문 검색 기능 개발 주문 기능 test 3. 주문 Entity Order는 Member, Delivery, OrderItemd와 연관관계가 있음 OrderItem은 list로 가지고 있음.(OrderItem이 연관관계주인) Order는 OrderItem을 읽어오기만 함. Order가 생성될 때 Member, Delivery, OrdeItems 필요함. 생성 메서드를 통해 한 번에 세팅하자. - 생성메서드가 가능한 이유는 - Order가 컨트롤 하는 쪽이기 때문에 양방향으로 연관관계를 맺어주는 편의메서드가 있기 때문. //==생성메서드==// //or..