본문 바로가기

Java/Spring Boot31

Auto Configuration(자동구성) Auto Configuration 스프링 부트는 자동 구성(Auto Configuration)이라는 기능을 제공하는데, 일반적으로 자주 사용하는 수 많은 빈들을 자동으로 등록해주는 기능이다. JdbcTemplate , DataSource , TransactionManager 등등 모두 스프링 부트가 자동구성을 제공해서 자동으로 스프링 빈으로 등록된다. 자동 구성을 언제 사용하는가? AutoConfiguration 은 라이브러리를 만들어서 제공할 때 사용하고, 그 외에는 사용하는 일이 거의 없다. 왜냐하면 보통 필요한 빈들을 컴포넌트 스캔하거나 직접 등록하기 때문이다. 하지만 라이브러리를 만들어서 제공할 때는 자동 구성이 유용하다. 실제로 다양한 외부 라이브러리들이 자동 구성을 함께 제공한다. @AutoC.. 2023. 9. 21.
JPA, 스프링 데이터 JPA jpa는 모든 데이터 변경이 transaction 내에서 실행되어야 함. service 클래스에 @Transactional 부착. Spring Data JPA는 JpaRepository를 상속하는 인터페이스의 구현체를 만들어서 등록해줌. public interface SpringDataJpaMemberRepository extends JpaRepository, MemberRepository { @Override Optional findByName(String name); } @Configuration public class SpringConfig { private final MemberRepository memberRepository; @Autowired public SpringConfig(MemberR.. 2023. 9. 18.
스프링 장점 스프링은 인터페이스의 다형성... 객체 지향의 다형성 개념을 활용해서 스프링의 DI(Dependencies Injection)을 사용하면 기존코드를 전혀 손대지 않고, 설정만으로 구현 클래스를 변경할 수 있다. (기능을 완전히 변경해도 기존 애플리케이션 실제 동작 코드를 변경할 필요 없이 어셈블리하는 코드만 수정하면 됨) 스프링 빈으로 등록되어 있는 경우 생성자주입을 받을 클래스의 생성자가 1개일때는 @Autowired 생략이 가능하다. public class JdbcTemplateMemberRepository implements MemberRepository{ private final JdbcTemplate jdbcTemplate; //생성자가 하나일때는 @Autowired 생략 가능 public Jd.. 2023. 9. 18.
thymeleaf 문법 th:each java의 forEach와 같은 역할임. 2023. 9. 16.
Spring Bean Spring Bean 1번째 방법: 컴포넌트 스캔 @SpringBootApplication이 붙어있는 클래스가 위치한 패키지 및 하위 패키지에서 @Controller,@Service, @Repository @Component 어노테이션 사용 시 자동으로 컴포넌트 스캔. 2번째 방법: 자바코드로 직접 작성 @Configuration public class SpringConfig { @Bean public MemberService memberService(){ return new MemberService(memberRepository()); } @Bean public MemberRepository memberRepository(){ return new MemoryMemberRepository(); } }메인.. 2023. 9. 16.
Test code 작성 import static org.assertj.core.api.Assertions.*;assertj : 값의 비교를 도와줌. 예제) assertThat(member).isEqualTo(result);@Test public void save(){ Member member = new Member(); member.setName("spring"); repository.save(member); Member result = repository.findById(member.getId()).get(); assertThat(member).isEqualTo(result); }예제2) - 에러나는 경우 @Test public void findByName(){ Member member1 = new Member(); memb.. 2023. 9. 15.