세미프로젝트발표




A조

간트차트 집어넣을것

폰트부분이 너무화려함( 깨져서 잘못뜬 폰트)


UI 웹부분 어떤 UI인지 인지하기힘듬 타이틀이 나와야함


시스템 구성도

웹서버가 웹클라이언트로 빠져야함


비동기식에 대한 언급이 없음

기술이 들어간 것에 대한 주요 언급이 없음

물리ERD만 들어갈 것


UML때는 VO는 제외할 것

시연때는 기술적인 내용을 발표 할 것(타이틀로)


시연중 오류시 감점



B조

간트차트 누가 무엇을 했는지 

PPT발표자는 처음부터 끝까지 내용숙지후 발표 할 것


C조

간트차트 잘되어있음

웹구현 소스설명 UI와 접목이 안됨

시연영상(자막을 추가하는 것이 좋음)


D조

지적없음




메인프로젝트

1차(회로)은 개인제출

2차(백엔드)도 개인제출

'학원수업 > Spring' 카테고리의 다른 글

학원 33~35일차 복습(4/27,5/2,5/3)  (0) 2018.04.27
학원 32일차 복습(4/26)  (0) 2018.04.27
학원 26일차 복습(4/18)  (0) 2018.04.18
학원 24일차 복습(4/16)  (0) 2018.04.16
학원 23일차 복습(4/13)  (0) 2018.04.13


세미프로젝트


안드로이드(리스트뷰,인탠트,쓰레드,소켓통신,HTTP통신,I/O파일 저장 및 읽기)

자바(소켓,IO,쓰레드),AJAX

스프링MVC,래스트풀 제이슨처리,마이바티스(다이나믹쿼리,리졸트맵,기타)

오라클(조인,서브쿼리,그룹함수)


중요파트 소켓,스프링MVC,래스트풀,마이바티스


발사믹목업,(UI)

1.(요구사항) 페르소나 ->기능추출

2.클래스설계

3.DB설계


워터풀방식

개발팀분장


작업플랜: 간트차트


조장님은 종이에 테스크보드(start, doing , end)



안드실행시 검은화면뜨면 IP주소확인할것!!

'학원수업 > Spring' 카테고리의 다른 글

학원 36일차 복습(5/4)  (0) 2018.05.08
학원 32일차 복습(4/26)  (0) 2018.04.27
학원 26일차 복습(4/18)  (0) 2018.04.18
학원 24일차 복습(4/16)  (0) 2018.04.16
학원 23일차 복습(4/13)  (0) 2018.04.13

이론



테스트시 

http://localhost/spring0426_jquery/exam?cmd= jsp이름 

입력하여 확인


id는 #

tag는 그냥

class는 . 


JQuery

$(document).ready(function(){});

축약형 : $(function(){});

 dom구조이다. dom만 로드 될때까지 기다린다.(이미지,동영상,리소스 X)


1. css의 가장 기본적인 선택자는 와일드 카드 선택자 이다.

    HTML문서 내의 모든 요소에 스타일이 적용된다. 

2. tag 선택자를 사용해서 특정 태그를 선택 할 수 있다.


JQuery 함수 필터 선택자

● 요소:contains(문자열) : 특정 문자열을 포함하는 문서 객체를 선택

● 요소:eq(n) : n번째 위치하는 문서 객체를 선택

● 요소:gt(n) : n번째 초과 위치하는 문서 객체를 선택

● 요소:has(h1) : h1태그를 가지고 있는 문서 객체를 선택

● 요소:lt(n) : n번째 미만에 위치하는 문서 객체를 선택

● 요소:not(선택자) : 선택자와 일치하지 않는 문서 객체를 선택

● 요소:nth-child(3n+1) : 3n+1번째 위치하는 문서 객체를 선택한다 (1,4,7,,,,)


each()는 jQuery를 사용해서 배열을 관리하려고 할 때 사용하는 메서드이다.

 1. $.each(배열객체,function(index,item){});

 2. $.(selector).each(function(index,item){});


filter() : 문서 객체를 탐색 및 필터링을 한다.

● $(selector).filter(selector);

● $(selector).filter(function(){ });


$.ajax({옵션속성:값}); // jQuery.ajax();

 url:문자열 - 요청url 설정

 type:문자열 - GET/POST설정

 data:객체,문자열 - 요청 매개변수 설정 

 success:함수 - 성공시 호출할 함수 설정

 async:불리언 - 동기/비동기 설정

 error:함수 - 실패시 호출할 함수 설정



실습


pom.xml

web.xml

kosta-servlet.xml

or.kosta.mvc.controller/JQueryExamController.java

ex2.jsp

ex3.jsp

ex4_class.jsp

ex5.jsp

ex6.jsp

ex7.jsp

ex8_each.jsp

ex9_filter.jsp

ex10.jsp

ex11.jsp

ex12.jsp

ex13.jsp

ex14.jsp

ex15_load.jsp

ex16_ajax.jsp

ex2_load_test.jsp

ex3_ajax.jsp

exam.jsp

exam2.jsp

exam3.jsp

examBind.jsp


'학원수업 > Spring' 카테고리의 다른 글

학원 36일차 복습(5/4)  (0) 2018.05.08
학원 33~35일차 복습(4/27,5/2,5/3)  (0) 2018.04.27
학원 26일차 복습(4/18)  (0) 2018.04.18
학원 24일차 복습(4/16)  (0) 2018.04.16
학원 23일차 복습(4/13)  (0) 2018.04.13

이론


동기식: HTTPRequest 모든 코드 전송



비동기식: XML_HTTPRequest 필요한 코드만 전송,callback***

자바스크립트 이벤트가 트리거


Ajax를 이용한 웹 접근 방법

 - 요청 / 응답 방식 동일

 - 응답은 자바스크립트의 HttpRequest객체가 받음

 - 사용자는 하나의 페이지에서 다른일을 계속 수행할 수 있음

 - 응답이 오면 자바스크립트의 함수를 통해 일을 수행

 - 하나의 페이지에서 여러 가지 데이터를 서버로부터 실시간으로 갱신 가능

 - 페이지리로딩없이 계속 서버와 통신 가능


■ Ajax의 장점

 - 서버 처리를 기다리지 않고, 비동기 요청이 가능

 - 수신하는 데이터의 양을 줄일 수 있음

 - 서버의 부하를 줄이고, 성능좋은 클라이언트를 사용함


■ Ajax의 단점

 - 페이지 이동없는 통신으로 인한 보안상의 문제

 - 클라이언스크립트로 작성되므로 Debugging이 용이하지 않음

 (WISWIG를 지원하는 통합개발툴(IDE)이 없음)


html에서 name 과 id

name: action에 해당하는 페이지로 전달하는 파라미터

id: javascript에서 다룰려고 지정


브라우저별 XMLHttpRequest 객체를 저장할 전역변수

서버로부터 결과가 도착할 때 수행하는 함수 지정 (콜백함수)


실습


pom.xml

web.xml

kosta-servlet.xml

or.kosta.config/config.xml

or.kosta.mapper/member.xml

or.kosta.Controller/DefaultController.java

or.kosta.Controller/javaScript01Controller.java

or.kosta.dao/MemberDao.java

or.kosta.vo/MemberVO.java

ex8_ajax.jsp

ex8_ajaxData.jsp


'학원수업 > Spring' 카테고리의 다른 글

학원 33~35일차 복습(4/27,5/2,5/3)  (0) 2018.04.27
학원 32일차 복습(4/26)  (0) 2018.04.27
학원 24일차 복습(4/16)  (0) 2018.04.16
학원 23일차 복습(4/13)  (0) 2018.04.13
학원 22일차 복습(4/12)  (0) 2018.04.12

이론


서브쿼리 (단일행,다중행)

-하나이상의 테이블에서 검색한 결과를 다른 테이블에 전달하여 새로운 결과를 검색하는 경우에 사용한다.


1.단일행 서브쿼리 : 하나의 행만 검색해서 메인쿼리에 보내는 것을 말한다.


2.다중행 서브쿼리

서브쿼리에서 반환되는 결과가 하나 이상의 행일때 사용.

반드시 다중행 연산자(Multiple Row Operator)와 함께 사용.

<다중행 연산자>

IN: 메인쿼리의 비교조건이 서브쿼리의 결과중에서 하나라도 일치하면 참.

ANY,SOME: 메인쿼리의 비교조건이 서브쿼리의 검색결과와 하나 이상이 일치하면 참

ALL: 메인쿼리의 비교조건이 서브쿼리의 검색 결과와 모든 값이 일치하면 참

EXIST: 메인쿼리의 비교조건이 서브쿼리의 결과중에서 만족하는 값이 하나라도 존재하면 참


ALL연산자: 메인조건의 비교조건이 서브쿼리에서 검색한 결과값과 모두 일치하면 참이 된다.

찾아진 값에 대해서 AND연산을 해서 모두 참이면 참이되는 셈이다.


ANY연산자

메인쿼리의 비교조건이 서브쿼리의 검색결과와 하나 이상이 일치하면 참이된다.

ANY하면 "비교값 중 하나보다 크냐"하고 묻는 것이 된다.

즉 그값들 중 어느하나보다 더 크면, 그 값들중 최소값보다 더 크면 참이된다.


사진불러올때 경로설정 주의하기!

자바스크립트 호이스팅 : Hoisting은 선언을 맨 위로 이동시키는 JavaScript의 기본 동작

선언시 var 대신 let으로 선언하면  Hoisting 일어나지 않음




실습


ex2.jsp

ex3.jsp

ex4.jsp

ex5.jsp

ex6_array.jsp


'학원수업 > Spring' 카테고리의 다른 글

학원 32일차 복습(4/26)  (0) 2018.04.27
학원 26일차 복습(4/18)  (0) 2018.04.18
학원 23일차 복습(4/13)  (0) 2018.04.13
학원 22일차 복습(4/12)  (0) 2018.04.12
학원 21일차 복습(4/11)  (0) 2018.04.11

이론


조건 함수

DECODE 함수: 오라클에서만 제공하는 유용한 SQL함수

DECODE(기준값,조건1,결과1,조건2,결과2,...,그외의 결과)"컬럼명"


CASE함수 : DECADE기능을 확장한 함수,

CASE [기준값] WHEN 조건1 THEN 결과1

             WHEN 조건2 THEN 결과2

             ...

             ELSE 그 외의 결과

             END "컬럼명"


DECODE 함수는 표현식, 컬럼값이 "=" 비교를 통해 조건과 일치하는 경우에만 다른 값으로 대처할 수 있다.

그러나 CASE 함수는 산술연산, 관계연산, 논리연산과 같은 다양한 비교가 가능하다.

WHEN 절에서 표현식을 다양하게 정의할 수 있다.


변환함수

TO_CHAR(날짜|숫자, '형식') : 날짜 또는 숫자를 지정한 형식의 문자열로 변환

TO_DATE(날짜형식의 문자열, '형식') : 날짜형식의 문자열을 지정한 형식의 날짜로 변환,시간까지 표현***

TO_DATE('09.10.12 12:30:00','YY.MM.DD HH:MI:SS')

TO_NUMBER(숫자형식의 문자열) : 숫자형식의 문자열이 숫자로 변환

TO_NUMBER('100') => 100


날짜 형식

scc , cc : 세기 표현

year : 년도를 영어로 표현

yyyy, yyy, yy, y : 년도를 자릿수로 자른다

bc, ad : 서기 등으로 표시

q : 분기 표시

mm : 두자리로 월표시

month: 영어로 표시

mon: 영어로 3자리로 월표시

rm: 로마자로 표시 i, ii. xi

ww: 1년기준 몇째주 표시

w:한달기준 몇째주 표시

ddd: 365(1년기준 ) 의 몇째 일

dd: 날짜를 두자리로 표시

d: 요일을 숫자로 표시

dy : 요일 한자리로 표시

day: 요일 표시

am, pm, a.m. , p.m. : 오전오후 표시

hh, hh12 : 12시 기준으로 표시

hh24 : 24시 기준으로 표시

/, "of" : 날짜의 중간에 문자 표시 -> to_char(to_date('19951201', 'yyyymmdd'),'yyyy "of" mm/dd')

spth : 날짜를 영문 서수로 표시

sp : 날짜를 영문 숫자로 표시


날짜에 연산되는 ROUND/TRUNC 함수


특정 날짜와 연산되는 함수

TO_YMINTERVAL, TO_DSINTERVAL


 ***다중행함수 ***

계산함수,집계함수,그룹함수

SUM,AVG,COUNT,MAX,MIN 함수

GROUP BY 칼럼명,... --정렬작업포함



NVL : null값을 다른 것으로 바꿔줌, 컬럼하나 단독적용 함수

AVG: COUNT 영향 널포함 꼭넣어야함

COUNT : 널을 포함하지 않음('*'를 사용하면 NULL도 카운트)


***Join(조인)***

사용하는 컬럼이 두 개 이상의 테이블에 존재하는 경우 사용되는 고급 쿼리 명령

32개까지 가능


종류

1.eque(inner) join : 조인되는 테이블 간의 조건에 만족하는 행만을 추출

2.outer join(left & right) : 조인되는 테이블 간의 조건에 만족하는 행과 마스터 테이블의 모든 데이터가 추출

3.cross join : 조인되는 테이블간의 어떤 관계도 없는 경우(table*table)->카디션 프로덕트

4.self join : 자기 자신의 테이블과 조인되는 경우


문법

1.T-SQL 문법: where조건절, 테이블명을 나열하여 표현

-select~ : 원하는 컬럼 나열

-from~ : 사용한 컬럼을 가진 테이블 나열

-where~ : 사용된 테이블간의 관계 또는 조건을 표현

2.Ansi 문법 : on조건절, 서술형태의 표현

조인되는 테이블간의 관계컬럼명이 같은 경우! -ansi


OUTER JOIN

1) LEFT OUTER JOIN

먼저 표기된 좌측 테이블에 해당하는 데이터를 먼저 읽은 후, 나중 표기된 우측 테이블에서 JOIN 대상 데이터를 읽어 온다.

Table A와 B가 있을 때 (Table 'A'가 기준이 됨),

A와 B를 비교해서 B의 JOIN 칼럼에서 같은 값이 있을 때 그 해당 데이터를 가져오고,

B의 JOIN 칼럼에서 같은 값이 없는 경우에는 B테이블에서 가져오는 칼럼들은 NULL값으로 채운다.


2) RIGHT OUTER JOIN

LEFT JOIN과 반대로 우측테이블이 기죽이 되어 결과를 생성한다.

TABLE A와 B가 있을때 (TABLE 'B'가 기준이 됨)



실습


pom.xml

web.xml 

kosta-servlet.xml

src/or.kosta.config/config.xml

src/or.kosta.mapper/gogek.xml

src/or.kosta.mapper/sawon.xml

src/or.kosta.mvc.controller/DefaultController.java

src/or.kosta.mvc.controller/GogekController.java

src/or.kosta.mvc.controller/SawonController.java

src/or.kosta.mvc.dao/GvoDao.java

src/or.kosta.mvc.dao/SawonDao.java

src/or.kosta.vo/DeptVo.java

src/or.kosta.vo/GogekVo.java

src/or.kosta.vo/SawonPhoneVo.java

src/or.kosta.vo/SawonVo.java

jsp/sawonList.jsp

jsp/deptList.jsp

jsp/sphForm.jsp

jsp/sawonPhone.jsp


'학원수업 > Spring' 카테고리의 다른 글

학원 26일차 복습(4/18)  (0) 2018.04.18
학원 24일차 복습(4/16)  (0) 2018.04.16
학원 22일차 복습(4/12)  (0) 2018.04.12
학원 21일차 복습(4/11)  (0) 2018.04.11
학원 20일차 복습(4/10)  (0) 2018.04.10

이론



제약조건주는이유: 데이터의 무결성보장, 

컬럼단위 제약조건

낫널은 컬럼단위

DDL에는 TCL이 포함


트랜잭션이란?

■ 트랜잭션이란 단어의 본래 뜻은 '거래'라는 의미

■ 예를 들어 돈을 주었는데 물건을 받지 못한다면, 그 거래는 이루어 지지

못하고 원상태로 복구되어야 함

이와 같이 쪼갤 수 없는 하나의 처리 행위를 원자적 행위라고 함

■ 여기서 쪼갤 수 없다는 말의 의미는 실제로 쪼갤 수 없다기 보다는 만일

쪼개질 경우 시스템에 심각한 오류를 초래할 수 있다는 것


eXERD설치하여 ERD작성


오라클에서 sql문 작성

--cascade: 상위테이블로부터 행을 삭제하고 하나의 삭제 명령어로 그에 대응되는 하위테이블의 해당행을 삭제할 수 있다.


-- 조건절 : where 컬럼명 조건 >> 제한된 행을 출력(데이터 제한)

-- 산술연산자 : +,-,*,/,mod(10,3) =>1

-- 관계연산자 : >,<,>=,<=,=,!=(<>)

-- 논리연산자 : not , and , or

-- 문자열연산자 : like

--between A and B : 범위연산자

--or,in 연산자

--연결 연산자(||)


-- 문자열 연산자) 주로 검색에서 많이 사용이 된다.

-- like (% : 모든 문자열, _ : 한문자


--수학 관련 함수

--power(n2,n1) : 제곱값을 구하기 위한 함수 n2에 대한 n1승의 값을 구함.

--dual => 실험하고 싶을때 // 가상테이블

--SIGN: 인자가 음수인지 양수인지 판단하는 함수

--n<0 : -1 ,n=0 : 0 , n>0 :1 을 리턴함

--mod(n2,n1) : n2나누기 n1의 나머지 값구하기 자바에서 % 동일

--반올림 함수 : ROUND

--자리수를 지정한 버림 : TRUNC

--정수형태 출력 : CEIL(천장,상한값), FLOOR(바닥,하한값)


--문자함수

--lower : 문자열 전체를 소문자로 변환

--upper : 문자열 전체를 대문자로 변환

--initcap : 문자열의 첫번째 문자만 대문자로 변환


--문자 조작 함수

--trim: 좌우측 공백을 제거

--ltrim: 좌측, rtrim: 우측


--INSTR 함수 : 문자열중에서 지정한 특정문자가 포함된 위치를 반환하는 함수

--instr(대상문자열, 찾을문자열, 방향, 검색된결과의 순번)

--방향 : 1이면 왼쪽->오른쪽  // -1이면 오른쪽->왼쪽


--SUBSTR 함수: 문자열의 일부를 추출하는 함수

--substr(문자열,N번째부터,N개);



실습


pom.xml

web.xml

kosta-servlet.xml

src/or.kosta.config/config.xml

src/or.kosta.mapper/gogek.xml

src/or.kosta.mvc.controller/DefaultController.java

src/or.kosta.mvc.controller/GogekController.java

src/or.kosta.mvc.dao/GvoDao.java

src/or.kosta.vo/gogekDTO.java

src/or.kosta.vo/searchVO.java

gogekList.jsp


'학원수업 > Spring' 카테고리의 다른 글

학원 24일차 복습(4/16)  (0) 2018.04.16
학원 23일차 복습(4/13)  (0) 2018.04.13
학원 21일차 복습(4/11)  (0) 2018.04.11
학원 20일차 복습(4/10)  (0) 2018.04.10
학원 19일차 복습(4/9)  (0) 2018.04.09

이론


pom.xml에 dependency 하기 -> web.xml에 필터설정하기, servlet설정하기 ->context.xml에 연결할 DB설정하기

->build path에서 톰캣에 ojdbc6.jar 추가하기*****  -> servlet.xml 생성하고 dataSource setting, MyBatis config,mapper setting , MyBatis Template configure, multipartResolver 추가하기 

vo생성하기 -> dao생성하기 ->config.xml생성하기 -> mapper.xml 생성하기-> Controller생성하기 -> jsp생성하기


파일 다운로드 방법(Controller 에서 사용)

파일의 버퍼 설정

다운로드 요청에 대한 HandlerMapping

이미 업로드된 경로에서 파일 다운로드를 할 것이기 때문에 리스트나 뷰에서 해당 파일의 이름을 받아와야 한다.

fileDown.kosta?fileName=파일이름

-> @RequestParam("fileName") String fileName

ServletContext와 파일의 절대경로를 얻어내기위해서

-> HttpSession session, HttpServletRequest request

다운로드란 브라우저와 Stream으로 연결되어서 통신되어야 하기 때문에..

-> HttpServletResponse response

applicationContext 객체를 request로 부터 얻어냄

업로드된 경로 얻음

그 경로로 파일객체를 생성

FileInputStream 스트림으로 읽어옴

요청객체로부터 연결될 브라우저의 마임타입을 얻어냄

만약 마임타입값이 없으면 그냥 디폴트로 스트림으로 연결

지정된 마임타입 세팅

다운로드될 파일의 길이 세팅

다운로드 Type을 설정함

위의 다운로드 타입의 정보를 해더로 설정

브라우저로부터 스트림을 연결

버퍼를 끼워서 빠르게 전달 목적

이제 브라우저로 보내고, 자원 닫으면 끝





실습


pom.xml

web.xml

kosta-servlet.xml

src/or.kosta.config/config.xml

src/or.kosta.mapper/tboardMap.xml

src/or.kosta.mvc.controller/DefaultController.java

src/or.kosta.mvc.controller/TboardController.java

src/or.kosta.mvc.dao/TvoDao.java

src/or.kosta.vo/TBoardDTO.java


JSP코드 블로그에 버튼,파일등록창 같이떠서 제외


'학원수업 > Spring' 카테고리의 다른 글

학원 24일차 복습(4/16)  (0) 2018.04.16
학원 23일차 복습(4/13)  (0) 2018.04.13
학원 22일차 복습(4/12)  (0) 2018.04.12
학원 20일차 복습(4/10)  (0) 2018.04.10
학원 19일차 복습(4/9)  (0) 2018.04.09

이론


JSON (JavaScript Object Notation)은 경량의 DATA-교환 형식이다. 

json   뷰


ServletConfig -> pageContext와 Scope가 동일

하나의 서블릿 안에서만 사용될 수 있다.

init-param으로 초기화


ServletContext -> applicationContext와 Scope가 동일

context-param으로 초기화


context는 모든 빈들에게 어노테이션을 제공

어노테이션: 실행가능한 주석


@Controller(DispatcherServlet) -> Model을 수행

or.kosta.mvc 안에 있는 모든 빈중에 어노테이션으로 설정한 객체는 스프링컨테이너에 빈으로 등록!

@Controller 어노테이션은 HandlerMapping에 의해서 요청을 분석이 될 때 선택되는 Model객체이다.

요청을 매핑해서 비지니스 로직이 수행이 된다.(http://XXXXXX/hello)


ModelAndView는 View, RequestScope에 저장, forward/redirect결정


@ModelAttribute을 사용해서 View로 값을 전달한다.



servlet.xml에 multipartResolver 추가 : 파일 업로드를 하기 위해서 꼭 필요한 객체  

form에서 이미지나 동영상, 음악 파일등을 서버로 전송할 때는 enctype="multipart/form-data"속성을 지정해야하며, 

이때 전송방식은 대용량 압축방식인 post여야 한다. 

이미지가 저장될 절대경로를 지정 -> 세션을 생성 ->시스템에 맞는 documentroot(최상위경로) 경로를 가져온다.

->조합해서 이미지가 저장될 경로값을 구현 -> upload된 파일 이름은 path에 설정 -> 파일 업로드





실습


pom.xml

web.xml

kosta-servlet.xml

index.jsp

or.kosta.mvc.controller/HelloController.java

or.kosta.mvc.controller/DefaultController.java

sayhello.jsp

or.kosta.mvc.controller/SimpleController.java

simpleForm.jsp

simpleResult.jsp

or.kosta.mvc.controller/SimpleController2.java

or.kosta.vo/simpleDTO.java

simpleForm2.jsp

simpleResult2.jsp

or.kosta.mvc.controller/UpsaveController.java

upform.jsp

success.jsp


'학원수업 > Spring' 카테고리의 다른 글

학원 24일차 복습(4/16)  (0) 2018.04.16
학원 23일차 복습(4/13)  (0) 2018.04.13
학원 22일차 복습(4/12)  (0) 2018.04.12
학원 21일차 복습(4/11)  (0) 2018.04.11
학원 19일차 복습(4/9)  (0) 2018.04.09

이론


톰캣 컨테이너로부터 요청이 왔을때 스프링은 DI하여 한번에 수행


포트번호 오류시 

Servers -> server.xml에서 63번 라인 port="80" URIEncoding ="EUC-KR" 으로 수정


액션팩토리-오브잭트팩토리패턴적용 요청에따른 모델생성관리 컨트롤러에게 보고



DI (Dependency Injection)

● DI는 스프링 컨테이너가 지원하는 핵심 개념 중의 하나다.

DI는 객체 사이의 의존 관계를 객체 자신이 아닌 외부의 조립기가 수행한다는 개념이다.

● 스프링은 설정 파일이나 어노테이션을 이용하여 객체 간의 의존 관계를 손쉽게 설정할 수 있다.

■ 의존성(Dependency)

∎ 비즈니스 로직을 수행하기 위해서는 둘 이상의 클래스가 사용되는데, 각 객체는 협업할 객체의 참조를 취득해야할 책임이 있는데, 이것이 의존성이다. 

∎ 객체간의 결합도가 높으면 테스트하기 어려운 코드가 만들어진다.

■ 의존성 주입 : 객체들은 객체의 생성 시점에 spring container로부터 의존성을 부여 받게 된다. 즉, 의존하는 객체를 주입받게 된다.


■ 빈 묶기(Bean Wiring)

스프링 컨테이너에서 각 객체간의 의존관계는 xml 파일을 통해서명시할 수 있다. 객체간의 의존 관계는 생성자와 setter 메소드 방식의 두가지 방식으로 지정할 수 있다. 

값을 추가 시킬수 있는 방법은 기본 2가지 setter,생성자


제어역행(IoC : Inversion of Control)

각 객체는 협업할 객체의 참조를 취득해야하는 책임이 있는데, 제어역행은 의존하는 객체를 역행적으로 취득하는 것이다. IoC는 한 객체가 의존성을 가지는 다른 객체의 참조를 취득하는 방법에 대한 책임의 역행이라는 의미를 가지고 있다. IoC를 적용하면 객체들은 어떤 존재에 의해 객체를 생성할 때 의존성을 가지는 객체를 주입받게 된다.



spring 컨테이너 : 스프링은 객체를 관리하는 컨테이너를 제공한다.(스프링 컨테이너는 객체를 생성, 저장, 관리한다.)

spring은 BeanFactory와 ApplicationContext 인터페이스를 구현한 컨테이너를 제공한다.


■ applicationContext.xml

∎ 스프링에서는 컨테이너에 저장될 Bean객체와 각 Bean객체간의 연관관계를 xml 파일을 통해서 설정한다. 

∎ <bean> 태그는 스프링 컨테이너 안에서 생성해야 하는 자바 빈을 정의한다.

 빈 추가: 빈을 위한 기본 설정에는 빈의 id와 클래스 전체 경로를 설정한다.

id 속성은 생성된 객체를 구분하는 식별값으로 사용되면, id 속성 대신 name 속성을 사용할 수도 있다.


∎ 프로토타입과 싱글톤

스프링의 모든 빈은 기본적으로 싱글톤이다. 컨테이너가 배포하는 빈은 항상 동일한 인스턴스를 반환한다. 컨테이너로부터 매번 새로운 인스턴스를 제공받으려면 <bean>태그의 singleton속성을 false로 혹은 scope속성을 prototype로 정의한다.



proprerty ==> setter호출

Spring은 외부조립기 역할, 객체들 관계를 맞추어 주는 역할...

스프링컨테이너는 싱글톤 레지스터리가 있어서 빈으로 등록하는 모든 객체를 싱글톤레지스터리에 등록 해놓고 사용한다.

di 시킬 대상을 적용해서 주입시킬때 ref= 속성을 을 사용한다.

생성자의 특징 : Spring에서는 생성자 오버로딩 문제일때 기본 빈의 주입 형식이 String이다.

 생성자 오버로딩일 경우 생성자의 자료형을 명시 해줘야 한다.



@Autowired 어노테이션을 이용한 자동 설정

◦ @Autowired 어노테이션은 의존 관계를 자동으로 설정할 때 사용되며 생성자, 필드, 메서드 세 곳에 적용가능하다.

◦ @Autowired 어노테이션은 해당 타입의 빈 객체가 존재하지 않거나 2개 이상 존재하는 경우 예외를 발생한다.


byName : property와 같은 이름의 빈을 찾아서 묶어준다.

byType : property와 같은 타입의 빈을 찾아서 묶어준다.

1.모든 빈을 검색한다.

2.같은 타입의 빈이 오면 혼돈을 일으키기 때문에 수식어 지정!


@Qualifier 어노테이션을 이용한 자동 설정 제한

◦ @Qualifier 어노테이션을 이용하여 동일한 빈 객체들 중에서 특정 빈을 사용하도록 설정할 수 있다.

◦ @Qualifier 어노테이션은 자동 연결할 빈 객체의 수식어 값을 가진다.

빈 객체들 중에서 <qualifier> 태그의 값이 @Qualifier 어노테이션의 수식어 값과 일치하는 빈을 자동 설정한다. 



빈의 초기화와 소멸

∙ 스프링은 빈의 구성과 해제를 위한 생명주기 메소드를 제공

∙ init-method는 빈이 객체화되는 즉시 호출될 메소드 정의

∙ destroy-method는 빈이 컨테이너로부터 제거되기 직전에 호출될 메소드를 정의


생성자 호출

 init 호출 

------------------------ 

printMsg 호출

빈의 라이프 사이클 테스트(str)

destroy 호출




실습


src.ex1.Ex1_MessageApp.java

src.ex1.Exam_Todate.java

src.ex1.Myprofile.java

src.ex1.ex1.xml

src.ex1.mypro.xml

ex1_di.jsp

원소스가 제대로 안올라가서 올리지 않음.

ex1_di2.jsp

myprofile.jsp

src.exam.Exam_DI.java

src.exam.exam_di.xml

exam_di.jsp

src.ex2.Ex2_Resource.java

src.ex2.Ex2_Message.java

src.ex2.ex2_di.xml

ex2_di.jsp

src.ex3.Ex3_Service.java

src.ex3.Ex3_ServiceImple.java

src.ex3.ex3_const.xml

ex3_const.jsp

src.ex5.ChinaOrder.java

src.ex5.IndoOrder.java

src.ex5.KorOrder.java

src.ex5.MenuInter.java

src.ex5.OrderSystem.java

src.ex5.ex5_menu.xml

orderForm.jsp

orderProcess.jsp

src.ex6.Ex6_AutoWired.java

src.ex6.ex6_auto.xml

src.ex6.Ex7_Resource.java

src.ex6.ex7_res.xml

src.ex6.Ex8_LifeCycle.java

src.ex6.Ex8_Main.java

src.ex6.ex8_life.xml

ex6_auto1.jsp

ex7_auto.jsp


'학원수업 > Spring' 카테고리의 다른 글

학원 24일차 복습(4/16)  (0) 2018.04.16
학원 23일차 복습(4/13)  (0) 2018.04.13
학원 22일차 복습(4/12)  (0) 2018.04.12
학원 21일차 복습(4/11)  (0) 2018.04.11
학원 20일차 복습(4/10)  (0) 2018.04.10

+ Recent posts