3. Back-end
1. 스프링 입문 - ch4. [ 스프링 빈과 의존관계 ]
1. 의존성 주입 (DI) 생성자에 @Autowired 가 있으면 스프링이 연관된 객체를 스프링 컨테이너에서 찾아서 넣어준다. 이렇게 객체 의존 관계를 외부에서 넣어주는 것은 DI(Dependency Injection), 의존성 주입이라 한다. * Autowired를 사용하기 위해선 해당 클래스, 주입하려는 객체 모두 스프링 빈에 등록되어 있어야 한다. DI에는 필드 주입, setter 주입, 생성자 주입 3가지가 있다. 위처럼 사용하는게 생성자 주입, 아래처럼 필드 앞에 @Autowired를 붙여서 사용하는게 필드 주입이다. (but 필드 주입은 권장하지 않음. 필드에 바로 주입시키므로 뭔가 변경하기가 어렵다) setter 주입은 아래와 같다. public하게 열려 있으므로 외부에서 혹시라도 잘못 바꿀..
1. 스프링 입문 - ch2. [ MVC와 템플릿 / API]
1. MVC와 템플릿 전달된 주소를 -> 내장 톰캣 서버가 받아서 -> 컨트롤러가 우선 확인 -> 컨트롤러에 매핑 있으면 viewResolver가 뷰를 찾아서 넘김 -> Tymeleaft 템플릿 엔진 처리 해서 웹 브라우저에 전달 2. API 전달된 주소를 -> 톰캣 서버가 스프링으로 전달 -> @ResponseBody가 붙어있으면 HttpMessageConverter가 1.단순 문자이면 StringConverter, 2.객체가 오면 JsonConverter가 동작 -> 문자 혹은 JSON 데이터를 웹 브라우저로 전달 @ResponseBody를 사용 => HTTP의 BODY에 문자 내용을 직접 반환 viewResolver 대신에 HttpMessageConverter가 동작 기본 문자처리: stringHt..
SpringMVC - [ REST API와 Ajax ]
1. JSON JSON(Java Script Object Notation)은 자바 스크립트 객체 표기법으로 아래와 같이 표기한다. { 속성명1 : 속성값1, 속성명2 : 속성값2, ... } JS객체를 서버로 전송하기 위해선 직렬화(=문자열로 변환)가, 서버가 보낸 데이터(JSON)를 JS객체로 변환할 때는 역직렬화가 필요하다. 데이터를 텍스트 즉 문자열로 바꿀 땐 JSON.stringify()를, JSON 문자열을 객체로 변환할 때는 JSON.parse() 를 사용한다. JS 객체 -> {name:"John", age:30} >> JSON.Stringify() >> String -> '{"name";"John", "age":30}' 2. Ajax Ajax(Asynchronous javascript an..
SpringMVC - [ SQL문 실행 로그 찍기 ]
1. pom.xml 파일에 아래 dependency 추가 https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1/1.16 2. resources 폴더 아래 파일 2개 추가 1) log4jdbc.log4j2.properties log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator 2) logback.xml 3. root-context.xml 파일 수정 driverClassName과 url을 아래 코드로 수정 그러면 로그에 이런 식으로 실행된 sql문이 찍힌다! 참조 https://fastcampus.co.kr/dev_academy..
SpringMVC - [ MyBatis 동적 쿼리 ]
1. 과 공통 부분을 로 정의하고, 로 포함시켜 재사용할 수 있다. 예를 들어 아래와 같이 두 개의 sql문이 있을 때 SELECT bno, title, content, writer, view_cnt, comment_cnt, reg_date FROM board WHERE bno=#{bno} SELECT bno, title, content, writer, view_cnt, comment_cnt, reg_date FROM board ORDER BY reg_Date, DESC, bno DESC LIMIT #{offset}, #{pageSize} 이런 식으로 공통 부분을 로 빼내어 사용할 수 있다. SELECT bno, title, content, writer, view_cnt, comment_cnt, reg_..
SpringMVC - [ MyBatis ]
1. MyBatis란? MyBatis란 SQL Mapping Framework로, 자바 코드로부터 SQL문을 분리해서 관리할 수 있다. 매개변수 설정과 쿼리 결과를 읽어오는 코드를 제거해줘서 생산성 향상 & 유지 보수 편리의 장점이 있다. 원래 왼쪽과 같이 작성했던 코드를 오른쪽과 같이 분리해서 쓸 수 있다. 2. SqlSession 1) SqlSessionFactoryBean, SqlSessionTemplate SqlSessionFactory가 SqlSession을 생성해서 제공하고, SqlSession이 SQL명령을 수행하는 데 필요한 메서드를 제공한다. 앞 선 두 개는 인터페이스이고, 이를 각각 구현한 게 SqlSessionFactoryBean, SqlSessionTemplate이다. SqlSess..