난 내가 자바를 다시 할 줄 몰랐다...
옛날에 잠깐 손을 대봤지만 산업군도 그렇고 영 매력적인 언어가 아니라고 생각한다. ( 나는 )
일단 컴파일언어이고, 무겁다, 문법이 길고 복잡하다.
아무튼, 현업에 오고 다시 공부를 정리했다.
예전에는 그냥 어떻게든 페이지만 구현해야하는 상황이었기에 구현했지만...
이제는 구조적인 부분에도 관심이 생기고, 이미 다른 구조에 대한 생각도 해봐서
구조를 어느정도 생각하고 작업에 착수할 것 같다.
아래는 내가 자바스프링을 통해 작업을 하기전에,
짚고 넘어가야하는 부분들을 순차적으로 생각해서 관련 내용을 정리한 내용이다.
1. pc 자바 환경 세팅 -> 버전 확인 및 재설치
-> 신경써야할점, 자바 버전 jdk 버전, sts 버전
2. 자바란?
JRE- > 자바 실행환경, java runtime environemnt,
jdk -> java development , jdk
j2se -> java 2 standard edition
자바는 플래폼에 가깝다.
자바 언어, 자바 애플리케이션, 자바 애플릿, 자바 런타임 환경, 자바 가상머신 모바일용 자바, 자바 웹 스타트... 등
* 자바 애플릿 -> 메인 필요없고, 웹 브라우저를 통해 실행된다. html 기반이다.
public static void main(Strting args[])
다른 어플리케이션과 달리 init start와 같은 메서드 가짐.
init - 초기화, 생성자 다음 호출
start - 애플릿 실행 또는 재시작에 호출
stop - 애플릿 실행 중지, destroy 호출 직전 호출
destroy - 애플릿 소멸 직전 호출,
애플릿, html 태그, 아카이브 ( 보관소 )
archive -jar 파일을 지정하는데 사용된다.
<APPLET
[ARCHIVE=archiveList]
CODE = appletFile.class
WIDTH=pixels
HEIGHT=pixels
[CODEBASE=codebaseURL]
[ALT=alternateText]
[NAME=apppletInstanceName]
[ALIGN=alignment]
[VSPACE=pixels]
[HSPACE=pixels]
>
[<PARAM NAME=appletAttribute1 VALUE=value>]
[<PARAM NAME=appletAttribute2 VALUE=value>]
...
</APPLET>
code - > 애플릿 클래스의 클래스파일 지정, class 형태로 지정
codebase -> 애플릿 다운로드 경로 지정 사용
lat -> 태그를 이해하지 못하는 웹브라우저의 애플릿 대신 보여줄 텍스트 지정 사용
name - > 애플릿 이름 사용 지정,
align ->
param name -> attrivute, value= value -> 외부 여백 사용,
애플릿이란, 그냥 html 박스라 생각하면 될 것 같다.
스프링에 대해 -> 프레임워크 mvc2 형태임, ( 나는 기존 mvc1으로 )
controller, model -> java source ( controller, dao , dto )->
spring -> 설정파일 ( dispatcher, bean ) -> java로 설정할 경우,
view -> src/main/webapp/resource : 정적자원들- > html, css, js
src/main/webapp/web-inf - > spring 설정 파일, xml로 설정 경우
src/main/webapp/web-inf/views : jsp 자바 서블릿 페이지 파일
src/main/webapp/web-inf/web.xml -> tomcat 설정 파일
pom.xml maven project 설정 파일.
spiring 설정 순서 -> 프로젝트 설정 - > pom.xml, maven jdbctemplate, dependeny
등,
여기서 pom.xml은 의존성파일 ( maven ), jdbctemplate는 db 드라이버,
dao->데이타소스 오브젝트 -> 모델, orm 등
메이븐에 대해
maven -> 메이븐은 빌드도구, 아파치재단 중앙 저장소.
빌드 - 빌드 프로세스 모델, 정리, 클린, 발드데이트, 프로젝이 올바른지 확인하고 모든 정보를 사용할 수 있는지 확인 단계 , 컴파일, 컴파일 단계, 테스트 유닉 테스트 수행 단계.......
tomcat 설정 -> servlet 설정 ( web.xml ) , 인코딩과 버전 체크
Dispatcher-Servlet / bean 설정
-> 디스패처 서블릿은, 가장 앞단에 프론트 컨트롤러 -> 프론트 url
모든 요청을 컨트롤러로 해둔다. -> 핸들러 매핑 -> 처리결과 뷰에 송신,
이클립스에 대해
dao - > data access object, connectionpool -> 커넥션 풀은, 커넥션 커서를 객체 안에 저장해놓은것, 커넥션을 한번만 일으키기 위하여.
dto -> 계층간 데이타 교환을 위한 자바빈즈, -> 컨트롤러 뷰, 비즈, 퍼시스턴스 계층
DTO = VO 동일개념, readonly 속성 가짐
svn에 대해
형상관리 툴
- revision - 저장된 파일 버전
- repository - 프로젝트 파일 및 변경 정보 저장되는 장소
- import - 빈 repository에 맨 처음 파일 채우는 것,
- export - 버전 관리 파일들을 뺀 순수 파일만 빼내는 것 -> 주소 배포 시에 활용
- checkout - 리모트 저장소에서 최신 버전의 소스코드를 최초로 받아오는것. /
- update - 로컬 저장소에 있는 파일들을 저장소의 최신 버전으로 받아오기
- commit - 로컬 저장소에 변경된 내용을 서버로 전송
- revert 로컬 저장소 내용을 이전 상태로 돌림
- add 버전관리 대상으로 파일 등록
- shelve - 로컬 작업 내용 잠시 백업
- trunk - 개발 소스를 커밋했을때, 소스가 모이는곳, 중심이 되는 디렉토리
- branch - trunk에서 분리/ 복사한 소스로 버전별 배포판을 만들거나 트렁크와 별도로 운영환경을 위한 안정화된 소스 관리 목적으로 사용
- tag - 특정 시점의 상태 보존 목적으로 사용, 스냅샷을 찍어둠.
- 머지 내가 작업한 부분과 다른 사람이 작업한 부분 병합.
bean 정의
spring contatner, ioc contatiner 개념 사용, container는 인스턴스 생명주기를 관리,
컨테이너는 개발자가 작성한 코드의 처리과정을 위임받은 독립적 존재....
bean은 spring ioc container가 관리하는 자바 객체, spring bean container에 존재하는 객체, spring ioc ( inversion of control ) contatiner에 의해 인스턴스화, 관리 생성...
bean은 보통 singleton으로 존재, class가 최초 한번만 메모리 할당, 그 메모리에 객체 만들어 사용하는 디자인 패턴
bean 생성방식 -> spring ioc container가 ioc container만들고, 그 안에 bean을 등록할때, interface 들을 life cycle callback 라고 부른다.
life cycle callback 중에는 component 붙어있는 모든 class의 instance를 생성해, bean으로 등록하는 작업을 수행하는 annotation processor가 등록되어있다.
즉, 컨포넌트를 일괄 생성하는 프로세서가 있음.
1. componentscan은 어느 지점부터 component를 찾으라고 알려준다.
2. component는 실제로 찾아 bean으로 등록
bean 설정 파일은 xml과 자바 class가 많고, 최근엔 자바 설정을 더 사용.
속성은, class, id, scope, constructor-arg
property, 생성 시 bean setter에 전달 인수
init-method, destroy-method
singleton bean은 spring container에서 한번 생성 후, container가 사라질때
bean도 제거, 생성된 하나의 instance는 single beans cache에 저장되고, 해당 bean에 대한 요청과 참조가 있으면 캐시된 객체를 반환.
하나만 생성되기 때문에 동일한 것 참조. 모든 bean은 scope 가 지정 X면 싱글톤.
하나의 bean 정의에 대해 , spring ioc container 내에 단 하나 객체,
prototype, 하나의 bean 정의에 대해, 다수의 객체가 존재한다.
request - > 한번 요청마다 하나씨,
session - > 하나의 bean 정의에 대해서 하나의 session의 주기 안에 하나의 객체만 존재
global session 하나의 bean 정의에 대해서 하나의 global http session 주기 안에 객채만 존재.
이클립스 검색, ->
컨트롤+f3, 컨트롤 마우스커서
alt + 화살표 : 이후, 이전
ctrl + o 해당 소스의 메소드 리스트 확인
f4 - > 해당 클래스 하이라이키, 계층 정보 조회
문자열 찾기
ctrl + k , 찾는 문자열 블럭으로 설정한 후 키를 누름
ctrl + shift + k 역으로 찾고자 하는 문자열 찾아감.
ctrl +j 입력하면서 찾음..
ctrl + shift+ j 입력하면서 거꾸로 찾아감.
ctrl + f 기본적으로 찾기
f2 -> 에러 힌트
1. client(브로우저)
2. requset (url 요청) -> web.xml에 등록된 내용만,
3. despatcherservlet( 프론트 페이지 )
4. handlermapping ( 엔드포인트 위치, 블루프린트, 네임스페이스)
5. controller ( 실 로직, 뷰 정보, 접근 서비스 리턴 )
6. service (실 로직 )
7. DAO ( 모델)
8. DB
9. DAO
10. service
11. controller
12. dispatcherservlet
13. view resolver (web.xml에 포함되는 뷰 정보 조회 및 뷰에 데이타 전달)
14. view
15. response
AOP -> 관점 기반 프로그래밍,
비즈니스 로직과 공통 모듈 구분 후, 분리
핵심관점 ( 비즈니스 로직 ) + 횡단관점 ( 트랜잭션, 로그, 권한 체크, 인증, 예외 처리 등
joinpoint -> 특정 작업 실행되는 시점,
aspect - > advice, pointcut - aspect
weaving, joinpoint들을 advice로 감싼다. weaving...
pointcut을 이용하여, advice 메소드가 적용될 비즈니스 메소드를 정확하게 필터링
execution , po
참고 : https://velog.io/@gillog/Spring-Bean-%EC%A0%95%EB%A6%AC
'IT이론 > framework' 카테고리의 다른 글
하둡이란? (0) | 2022.03.05 |
---|---|
nodejs 개발 환경을 세팅해보자 - 1 (0) | 2021.09.21 |
댓글