자바 -> 스프링 개념

0

개념정리

목록 보기
21/33
  • 웹서버를 쓰면 servlet/jsp 실행 엔진이 내장돼있음. 톰캣이 알아서 객체도 만들어주고 요청이 있을때마다 알아서 클래스도 찾고,만들어주는 역할을 함. 객체를 만들어서 특정 메서드(init())도 요청함
    -> 개발자가 원래 해야할 일을 엔진이 해주는 것임
    -> 우리가 해야할 일은 엔진이 깔아준 곳에서 소스코드를 만들면 되는 것
  • servlet은 굉장히 규격화 돼있음(까다로움)!. service(), doGet(), doPost 메서드여야만 하고 파라미터는 무조건 request, response여야 함

-> 요즘은 잘 쓰지 않지만 클라우드 시장이 나오기 전에 분산 컴포넌트 기술(EJB, Enterprise Java Bean)이 한참 유행했었다.
클라이언트가 활성화됐다가 떨어지면 서버가 활성화되고, 서버가 활성화됐다가 떨어지면 클라이언트가 활성화됨.
-> 이때 분산 컴포넌트개발기술이 나타났는데, 여기서 컴포넌트는 객체지향 기반에서 재사용성이 높은 큰 덩어리라고 생각하면 됨.

  • 버튼을 개발하는 개발자, 트리를 개발하는 개발자(꾸미는건 프로퍼티라고함), 건빵을 개발하는 개발자가 있을 것임
    -> 애플리케이션의 구성요소를 쓰이게 하려면 별을 개발하는 개발자는 그 별이 여기저기서 재사용돼서 쓰일 수 있도록 name, color, size와 같은 property를 외부에서 설정할 수 있도록 해줘야함
    -> 별을 쪼개보면 삼각형이 재사용됐고, 사각형도 쓰이는 것을 알 수 있음

스프링에서 이 컴포넌트를 자바빈(Java Bean) 이라고 한다. 자바언어 기반의 컴포넌트.

-> 자바빈이 되기 위해서는 조건이 있음. 4가지 모두 만족해야함
1) public class
2) 매개변수 없는 public 생성자
3) 객체의 프로퍼티(property)용 멤버변수(mv)는 public이면 안됨 (private으로 선언)
4) property용 멤버변수의 public으로 선언된 setter, getter가 있어야함
-> 컴포넌트화돼있어야 parameter, result타입으로 사용할 수 있는 것임 (Vo들이라고 생각?)

property(속성)와 attribute(속성) 의 차이점?

  • property: 객체가 갖고있는 특징, 속성. 객체의 property라고 하지 객체의 attribute라고 하지 않음.

메서드 이름에 꼭 set, get을 쓰는 이유??

  • 이 클래스가 언제 더 확장이 되어서 컴포넌트가 될지 모르니까 처음부터 컴포넌트의 기준에 맞춰서 setter, getter를 만들어놓은것임.
  • EJB는 2000년대 초에 유행하던 것. servlet보다 더 강화돼있음 -> 그러나 톰캣서버로는 안됨. WAS가 있어야만 실행이 됨 -> 돈없는 회사는 사용 불가 & 분산 컴포넌트가 개발되기 위해서는 컴퓨터 환경이 엄청 좋아햐됨(비용비쌈) -> 부담스러워지기 시작함.
  • 분산이라는 개념이 처음에 각광받았지만, 개발자가 쓰지 않더라. 분산이라는 개념을 쓰지 않으면 EJB을 쓸 필요가 없다.
    -> 이러한 불편한 점 들 때문에 나온것이 spring framework, EJB보다 훨씬 가볍다.
    단, 최소 12GB 필요함. 가볍다는 의미로 spring이라는 단어를 씀. 분산은 떨궈버리고 컴포넌트를 개발할 수 있는 기술을 만든 것이 spring임.
  • EJB = 자바 기반의 기술, 스프링은 spring'Framework'라고 한다.
  • frameWork는 프레임이 짜여져있어서 하라는 대로 해야함.
    -> 하라는대로 하면 쉬운데, 이게 왜 이렇게 동작하지? 라고 생각하면 짜기 어려워진다.
  • 프레임워크 : 중심이 프레임워크이고 개발자가 프레임워크에 맞춰야하는것. 하라는대로~
  • 라이브러리 : 중심이 개발자, 필요하면 쓰면되고 필요없으면 다른 라이브러리로 대체해도 됨
  • 스프링은 프레임워크 이기 때문에 무거움. 느림. 설정하기가 어려움(설정이 절반!)
    -> 설정을 쉽게 도와주는 모듈이 있음 -> SpringBoot. 스프링부트의 기반이 스프링임.
    스프링부트를 이용해서 스프링을 좀더 쉽게 설정할 수 있다는 것임. 별거없음. 스프링부트도 어차피 스프링하는것.
profile
백엔드를 공부하고 있습니다.

0개의 댓글