시스템아 미안해
Spring FrameWork 본문
Spring FrameWork는 JavaEE 기반의 어플리케이션 개발을 쉽게 해주는 오픈소스 어플리케이션 프레임워크이다. POJO를 Spring Container를 통해 Bean으로 처리해준다.
스프링 프레임워크의 특징
- POJO(Plain Old Java Object) 방식 : 특정 인터페이스에 구현되거나 상속되지 않는 순수 자바 객체.
- 관점 지향 프로그래밍(Aspect Oriented Programming, AOP) : 추상/부모/클래스나 인터페이스로 관리된다는 게 아니라 모듈을 관리해주는 모듈을 상하/인터페이스 관계없이 따로 마련한다는 개념. 어노테이션을 이용해 각자의 객체를 사용한다.
- 의존성 주입(Dependency Injection, DI) : 설정 파일이나 어노테이션을 통해 객체간의 의존 관계를 설정, 외부에서 생성한후 주입시켜주는 방식.
- 제어 역전(Inversion of Control, IoC) : ApplicationScope내의 spring container가 코드 대신 스프링 객체에 대한 제어권을 갖고 있다. 그래서 객체를 개발자가 직접 생성하는 것이 아니라, 객체의 의존성을 스프링으로 역전시켜 객체간의 결합도를 줄이고 유연한 코드를 작성하게 하여 가독성 및 코드의 중복, 유지보수를 편하게 할 수 있다.
spring은 톰캣 서버(J2EE기반) 안에서 동작한다. run시 만들어지는 객체를
ApplicationScope을 대여받아서 객체를 적재한다. spring객체는 run시 생성되고 싱글톤이므로 applicationScope의 생명주기인 서버가 없어질때까지 계속 한 객체만 존재한다.
spring은 프로그램 시작하기 전에, 객체들을 연결해준다.(Controller, Service, DAO, Mybatis)
구성
Spring Framework는 어플리케이션을 구성하는 Bean객체의 생명주기를 관장하는 core를 기반으로
DAO, ORM, AOP, JEE, Web으로 구성된다
[스프링이 DI를 하는 IoC과정]
Spring ORM(Object Relational Mapping)쪽에서 mybatis의 객체들을 만들어놨음 > 거기에 소스코드를 추가해서 dao에 di > service에 또 di > Controller에 di
[편집 구조 ]
src/main/java(자바파일) + src/main/resources(환경설정파일)은 모두 실행시 classes에 같이 적재됨.
이미지,css,js파일은 반드시 wepapp-resource폴더에 넣어야함.(환경설정으로 변경 가능하긴 함)
[만들어진 bean을 web.xml에서 초기화하는 과정]
[자바에서 실행하기]
1. Spring Bean이 저장된 저장소 정보를 얻어오기 위해 application영역의 일부인 스프링의 저장소(webApplicationContext)를 호출한다.
- application은 ServletContext에 속함.
(ServletContext > application > webApplicationContext)
- ServletContext는 jsp내장객체.
WebApplicationContext wc = WebApplicationContextUtils.getWebApplicationContext(application);
2. bean객체가 저장돼있는 장소로부터 bean의 id로 객체정보를 얻어온다.
(이렇게 만들어진 객체는 언제 사용하든 지금 만들어진 객체 그대로 쓰기때문에 싱글톤이다.)
주의할 점은 spring이 읽어온 객체는 무조건 object형이기 때문에 down casting을 해줘야 한다.
PersonVo p1 = (PersonVo)wc.getBean("p1");
PersonVo p2 = wc.getBean("p2", PersonVo.class); << 스프링에게 캐스팅을 위임하는 방식
결론 : application에 적재된 spring객체(bean)를 webApplicationContext가 읽어옴
wc.getBean(object형) >> downcasting으로 원래 객체의 자료형으로 down-casting해주기.
수업 진행하면서 지속적으로 수정할 예정입니다.
'java > Spring Framework, Maven' 카테고리의 다른 글
파일 다운-업로드 경로 외부 파일(.properties)에서 설정하기. (0) | 2022.12.14 |
---|---|
@requestBody vs @requestParam (0) | 2022.12.13 |
Spring MVC Life Cycle (0) | 2022.07.04 |
Spring+Maven 환경설정 (0) | 2022.07.04 |
maven local repository - .m2삭제 (0) | 2022.06.27 |