본문 바로가기

Spring

(58)
스프링 컨테이너 ApplicationContext @Configuration이 붙은 AppConfig에서 Bean을 등록하고 생성자 주입 구현 각 객체가 참조하는 인터페이스에서 @Autowired 없어도 @Configuration을 통해 설정한 Bean이 컨테이너에 등록된 후 return 형식에 정의 된대로 자동 주입을 해준다. public class MemberServiceImpl implements MemberService{ private final MemberRepository memberRepository; public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; } @Override public void join(Me..
DB 접근 기술 JDBC 자바에서 제공하는 기능으로 DB에 접근할 수 있도록 API를 제공한다 Connection, PreparedStatement 등 직접 선언하여 코드를 구성해야 한다. SQL도 로직에서 직접 작성해야 한다 반복되는 코드가 많고 사용하기 어려움이 많다. JDBC Template JDBC의 반복 코드를 제거해주나, SQL은 직접 작성해야한다 JDBC와 JDBC Template은 DataSource 객체가 필요한데 이것은 Bean으로 등록하지 않아도 컨테이너에서 자동으로 관리하며 주입해준다. JPA SQL을 직접 작성할 필요없이 자바 코드로 대체할 수 있다 ORM을 제공하며 모델에는 @Entity 어노테이션이 필요하다. EntityManager를 통해 쿼리 요청을 수행한다. 스프링 데이터 JPA JPA를..
OCP 적용 DI 구조 OCP (개방 폐쇄 원칙) 확장에는 열려있고 변경에는 닫혀있음 Repository 사용을 생각해본다 데이터 저장에 사용되는 값을 읽어오는 경로와 방법이 다양하게 있을 수 있다. ex) memory, DB (JDBC, JPA, ...) save, findByID, findByName ... 등의 메소드를 가진 추상 클래스 (인터페이스)를 생성하고, 다양한 사용에 대한 repository에서 추상 클래스를 상속받아 자신의 방법에 맞게 구현한다면? 인터페이스 확장이 가능할 것이다. public interface MemberRepository { Member save(Member member); Optional findById(Long id); Optional findByName(String name); Lis..
Spring boot traffic 제어 + redirect 보호되어 있는 글입니다.
Sentry + Spring Boot (monitoring tool) 보호되어 있는 글입니다.
Spring 에러 전역 처리 보호되어 있는 글입니다.
JPA Query 모음 GroupBy 절 @Query("SELECT A FROM Predict A WHERE A.subjectName = :subjectName GROUP BY A.code") ArrayList findBySubjectNameAndGroupByCode(@Param("subjectName")String subjectName); AND 포함 @Query("SELECT A.code FROM Predict A WHERE A.subjectName = :subjectName AND A.sentence = :sentence") ArrayList findCodesBySubjectNameAndSentence(@Param("subjectName")String subjectName, @Param("sentence")String s..
JPA, SQL Error: 1064, SQLState: 42000 예약어를 칼럼명으로 사용하였는 지 확인. check도 예약어였음...ㄷㄷ;;