스프링(20)
-
객체 지향 프로그래밍- SOLID
객체 지향 특징- 추상화- 캡슐화- 상속- 다형성(유연하고 변경이 쉬움) 객체 지향 프로그래밍은 여러 개의 독립된 '객체'으로 되어 있다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 객체는 자바에서 class라고 생각하면 된다. 객체 지향 특징 중에서 다형성이 중요!! 다형성예를들어 자동차라는 역할이 있다. 이 역할을 수행하는 자동차 k3, 아반떼, 테슬라가 있다. 운전자는 어떠한 자동차를 타든 운전을 할 수 있다. 자동차를 다른것으로 바꿔도 운전을 할 수 있는거다. 여기서 자동차 역할은 interface이고, 이 interface를 구현한 객체(클래스)가 k3, 아반떼, 테슬라이다. 이렇게 어떠한 자동차 객체로든 바꿀 수 있게 변경이 쉽고 유연한 이유는 다형성 때문이다. SOLID..
2024.05.23 -
스프링 spring
스프링 기술- 스프링 프레임워크- 스프링부트(스프링을 편리하게)- 스프링 데이터(CRUD 편리하게) - 스프링 세션(세션 기능 편리하게)- 스프링 시큐리티(보안 관련)- 스프링 Rest Docs(API 문서 관련)- 스프링 배치(배치 처리 특화된 기술)- 스프링 클라우드(클라우드 기술) 위에 중에서 스프링 프레임워크가 가중 중요!! 스프링 프레임워크 핵심기술- 스프링 DI 컨테이너- AOP- 이벤트- 기타 스프링부트- 스프링을 편리하게 사용할 수 있도록 지원- Tomcat 같은 웹 서버 내장해서 별도의 웹 서버 설치 안해도 됨- 관례에 의한 간결한 설정 스프링은 자바 언어 기반의 프레임워크근데 자바는 객체 지향 언어이다. 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크이다.
2024.05.16 -
스프링 AOP
AOP가 필요한 경우- 모든 메소드의 호출 시간을 측정 하려고 한다. 근데 모든 메소드에 시간 측정 로직을 추가하려면 너무 많은 시간이 소모된다. public List exampleMethod(){ long start = System.currentTimeMillis(); try{ //메소드 로직 ... }finally{ long finish = System.currentTimeMillis(); long timeDiff = finish - start; System.out.println("메소드 걸린시간 " + timeDiff); } } 메소드가 수천개 있으면 위와 같은 작업을 수천개 해야한다. 이때 필요한게 ..
2024.05.16 -
스프링 jdbc 템플릿
jdbc template은 MyBatis 와 같이 JDBC API의 반복 코드를 대부분 제거해준다. 그러나 SQL은 직접 작성해야 한다. 사용하기 위해서 먼저 build.gradle 에 dependency를 추가해준다. implementation 'org.springframework.boot:spring-boot-starter-jdbc' datasource를 위해 application.properties에 url, username. password를 작성해준다. spring.datasource.url=jdbc:h2:tcp://localhost/~/test spring.datasource.username=idididspring.datasource.password=123123스프링부트의 auto confi..
2024.05.16 -
스프링부트 테스트
스프링부트가 테스트를 위해 두 가지 모듈을 제공한다.1) spring-boot-test : 핵심 기능 포함2) spring-boot-test-autoconfigure : 테스트를 위한 AutoConfiguration 제공 'spring-boot-starter-test' 를 dependencies에 추가 해주면 자동으로 추가가 된다. 테스트는 단위 테스트와 통합 테스트가 있다. - 단위 테스트단위테스트는 @SpringBootTest 어노테이션을 사용하지 않는다. 그래서 스프링을 실항하지 않고 하는 테스트이다. @SpringBootTest 가 붙으면 스프링이 실행되기 때문에 단위 테스트가 아니다. 단위 테스트는 작은 단위로 검증하는 테스트로 보통 메소드 단위로 테스트한다. 메소드에 @Test 어노테이션을 ..
2024.05.14 -
DI 주입 방법
DI 주입 방법 1) 필드 주입 @Autowired private MemberService memberService; Java의 Reflection API를 사용하여 접근 제한자를 무시하고 필드에 직접 접근할 수 있다. Spring Framework는 이러한 Reflection API를 사용해 private으로 선언된 필드에도 의존성을 주입할 수 있다. final로 되어 있어도 Reflection API로 변경이 가능하기 때문에 변경이 가능하다. 따라서 객체가 생성된 후에도 의존성이 변경될 수 있다. 이것은 객체의 불변성을 해칠 수 있다. 또한 테스트를 위해서 스프링 컨테이너가 필요하여 테스트하기 어렵다. 2) setter 주입 private MemberService memberService; @Auto..
2024.05.14