일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스터디
- java
- 이펙티브 자바
- 알고리즘
- Effective Java
- 뮤텍스
- 개발
- 메모리
- spring
- 운영체제
- 스프링
- 컴퓨터공학
- 신입
- Public
- package-private
- 컴퓨터과학
- 자바
- 우리카드
- 프로그래밍
- 디지털
- IT
- 공채
- CS
- 신입사원
- 깃허브
- 깃
- OS
- 세마포어
- 정보처리기사
- github
- Today
- Total
목록Spring/입문 (6)
주니어 개발자 성장기
AOP란 공통 관심 사항(cross-cutting concerns)과 핵심 관심 사항(core concerns) 중에서 공통 관심 사항을 축약할 수 있도록 도와주는 기술이다. 공통 관심 사항이란, 비즈니스 로직에서 공통적으로 필요한 항목들(메서드의 호출 시간 측정)을 말하고 핵심 관심 사항은 비즈니스 로직에서 다른 비즈니스와 구분되게 해주는 핵심적인 것이라고 할 수 있다. 메서드가 호출되면 AOP가 이를 인터셉트해서 코드를 중간 중간에 실행해주고 어떤 때에 인터셉트 할지 안할지를 쉽게 프로그래밍 할 수 있다. 그럼 어떻게 적용할까? @Aspect @Component public class TimeTraceAop { @Around("execution(* hello.hellospring..*(..))") p..
1. 순수 jdbc 반복적인 코드 SQL 직접 작성 *스프링 통합 테스트 스프링 서버를 띄운 뒤에 DB로 테스트 해보는 것, @Transactional 로 Test 결과가 DB에 커밋되지 않고 롤백되도록 할 수 있다. 2. 스프링 JdbcTemplate 순수 jdbc에 비해 반복적인 코드를 확실하게 줄였음 SQL문은 역시 직접 작성 3.JPA 사용하기 전 도메인을 매핑하는 작업이 필요 역시 반복적인 코드를 획기적으로 줄임 기본적인 CRUD에서 SQL문이 따로 필요 없음 (SQL문이 필요할 때도 있다.) @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private Str..
스프링 컨테이너 안에 스프링 빈으로 등록하는 방법 1. 컴포넌트 스캔과 자동 의존관계 설정 각 클래스 바로 위에 @Controller @Service @Repository 등의 어노테이션을 추가하면 해당 클래스는 Component가 된다. (이것은 각각의 어노테이션을 찾아가 보면 안에 @Component 어노테이션이 존재하기 때문이다.) Spring이 실행될 때 컴포넌트 스캔을 하는데 이 때, @Component이 들어가 있는 클래스들은 Spring 컨테이너 안에 객체가 하나씩 자동으로 생성이 된다. 스프링이 실행될 때 컴포넌트 스캔시 해당 어노테이션이 있으면 직접 스프링 빈을 등록한다. @Bean 어노테이션을 통해서 스프링 빈을 수동으로 등록한다. *컨트롤러는 스프링이 관리하기 때문에 수동으로 하면 안..
@Test public void function(){ ~~ } @Test void 회원가입() { //given Member member = new Member(); member.setName("spring"); //when Long saveId = memberService.join(member); //then Member findMember = memberService.findOne(saveId).get(); assertThat(member.getName()).isEqualTo(findMember.getName()); } -> 한 개의 테스트에 해당한다. @Test 어노테이션을 가진 메서드들은 순서에 상관없이 한 번씩 실행된다. @AfterEach public void afterEach(){ ~~~ }..
Shift + F6 변수 리팩토링 soutv value를 출력하는 함수를 자동완성 Command + Shift + Enter 끝에 세미콜론 자동으로 찍어주는 단축키 Option + Command + V 자동으로 변수 넣기 /* 입력 + Enter /* */ */와 함께 주석의 공간을 만들어준다. /** 입력 + Enter /** * * @param 변수이름 * @return */ 위와 같이 자동으로 바뀐다. Control + T 리팩토링과 관련된 작업을 할 수 있는 단축키 그 중 8.Extract Method ->Method로 뽑아버리기 단축키는 Option + Command + M Command + Shift + T 새로운 테스트를 만드는 단축키
1. 정적 컨텐츠 말 그대로 정적(static)으로 컨텐츠를 전달 즉, 서버에서 어떠한 처리를 거치지 않고 그대로 html을 전달한다. 웹 브라우저 -> 내장 톰캣 서버 -> 스프링 컨테이너 - 매핑된 컨트롤러가 있는 지 살펴본다. 없는 경우가 바로 정적 컨텐츠 -> resources: static/example.html 과 같은 html을 찾아서 클라이언트에게 반환해준다. 구조도: 2. MVC MVC: Model, View, Controller View: 화면에 집중하는 것 Controller: 비즈니스 로직, 서버 뒷단에 관련된 것 Model: 필요한 것들을 담는 것 *thymeleaf의 장점: 서버를 구동시키지 않더라도 html 파일을 열면 대강의 구조(껍데기)를 확인할 수 있다. 구조도: 3. A..