스프링

WAS가 전송하는 데이터 유형 1. 정적 리소스 고정된 HTML 파일, CSS, JS, 이미지, 영상 등을 전송한다. 주로 웹 브라우저가 요청하고 전송받음 2. HTML 페이지 동적으로 필요한 HTML 파일을 WAS가 생성해서 웹 브라우저에 전달한다. 주로 웹 브라우저가 요청하고 전송받음 3. HTTP API HTML 파일이 아니라 데이터를 전달한다.(주로 JSON 형식의 데이터) 웹 브라우저 뿐만 아니라 다양한 시스템에서 호출한다.(안드로이드, IOS, React.js 등) 다양한 시스템에서 HTTP API를 사용하여 데이터를 호출하며 UI화면이 필요하면 클라이언트에서 별도로 처리한다. 서버와 앱, 웹 클라이언트 또는 서버와 서버 간에 이 방법의 통신이 많이 사용된다. 렌더링 기법 1. 서버 사이드 렌..
서블릿 위 내용들은 WAS에서 클라이언트로부터 요청이 왔을 때 수행해야하는 로직들이다. 근데 이 모든 로직들을 개발자가 하나하나 설정하기 너무 번거롭다. 이 문제를 해소시켜주기 위해 나온 것이 서블릿으로 서블릿을 사용하게 되면 위 로직들 중 초록색 네모칸 쳐진 비즈니스 로직만 개발자가 작성하면 된다. 서블릿 작동 과정 웹 브라우저로부터 HTTP 요청 시 WAS는 request, response 객체를 새로 생성하고 사용할 서블릿 객체를 호출한다. (호출되는 서블릿은 웹 브라우저가 요청한 URL에 맞게 호출될 수 있는 서블릿이 존재할 경우 호출된다.) request, response 둘 다 개발자가 편리하게 HTTP 스펙을 사용할 수 있도록 만들어진 개체로 request는 HTTP 요청 정보를 편리하게 사..
웹 서버(Web Server) HTTP 기반 동작 정적 리소스, 기타 부가기능 제공 정적(파일) HTML, CSS, JS, 이미지, 영상 등 ex ) APACHE 웹 애플리케이션 서버(WAS - Web Application Server) HTTP 기반 동작 웹 서버 기능 동작 프로그램 코드로 애플리케이션 로직 수행 - 동적 HTML, HTTP, API(JSON) - 서블릿, JSP, 스프링 MVC ex) Tomcat, Jetty 등 웹 시스템 구성1 - WAS, DB WAS, DB만으로 시스템 구성한 상태 WAS는 정적 리소스, 애플리케이션 로직 모두 제공한다. 하지만 WAS가 너무 많은 역할을 담당해 서버 과부하가 걸릴 수 있으며, 정적 리소스 처리보다 복잡한 처리가 필요한 애플리케이션 로직 수행에 제..
스프링 컨테이너 ApplicationContext를 스프링 컨테이너라고 한다. 이는 인터페이스로 어노테이션 기반의 자바 설정 클래스로 만들 수도 있고(AnnotationConfigApplicationContext) XML 기반으로 스프링 컨테이너를 만들 수도 있다.(GenericXmlApplicationContext) 최근에는 XML 기반 설정은 잘 사용하지 않으나 기존의 많은 레거시 프로젝트들이 XML로 되어있는 경우가 많다. BeanFactory는 스프링 컨테이너의 최상위 인터페이스로 스프링 빈을 관리하고 조회하는 역할을 담당한다. getBean() 등 대부분의 기능을 BeanFactory에서 제공한다. ApplicationContext는 BeanFactory 기능을 모두 상속받아 사용하는데, 대체로..
SOLID 5원칙 SRP(Single Responsibility Principle) : 단일 책임 원칙 OCP(Open/Colosed Principle) : 개방 폐쇄 원칙 LSP(Liskov Substitution Principle) : 리스코브 치환 원칙 ISP(Interface Segregatoin Principle) : 인터페이스 분리 원칙 DIP(Dependecy Inversion Principle) : 의존관계 역전 원칙 1. SRP 단일 책임 원칙(Single responsibility principle) - 한 클래스는 하나의 책임만 가져야 한다. - 하나의 책임의 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으면 SRP를 잘 따른것 ex) UI 변경 시 서버 코드에는 영향을 주..
웹 브라우저로부터 URL을 전송받았을 때 동작 방식(웹 MVC) 웹 브라우저에서 서버로 URL을 전송했을 때 작동 방식은 아래 2가지 경우로 나눌 수 있다. 1. Controller에서 처리할 수 있는 URL을 전송받았을 경우 톰캣 서버를 거쳐 스프링 컨테이너에 도착했을 때, 웹 브라우저로부터 받은 URl에 대응되는 명령이 Controller에 있는 경우 Controller 내부 로직을 수행한다. 이 때, return을 통해 반환하는 데이터가 문자열인 경우 위의 그림에서처럼 viewResolver가 대응 되는 view 파일이 있는지 살펴본다. (만약 전송할 model이 있다면 view로 같이 전달한다.) 있는 경우엔 문자열의 앞뒤로 문자열을 덧붙여 페이지로 만들고 이를 웹 브라우저에 html 형식으로 전..
해결방법 1. 아래 붉은 원을 그린 Override 체크박스를 체크한다. Settings->Builde, Excution, Deployment -> Build Tools -> Maven 2. 그럼 옆 Maven에 Dependencies 폴더가 생기는 것을 확인할 수 있다. 3. 만약 안 생기고, 오류 구문이 계속뜨면 재시작한 뒤 maven을 reload해준다.
@RestController("apiNoticeController") @RequestMapping("/api/notice/") public class NoticeController { @Autowired private NoticeService service; @RequestMapping("list") public List list() throws ClassNotFoundException, SQLException { List list = service.getList(1, "TITLE", ""); return list; } } 위와 같이 리스트를 반환시켜 해당 객체를 JSON 형식으로 클라이언트에 넘기려 했으나 org.springframework.http.converter.HttpMessageNotWrita..
@Configuration 어노테이션을 사용하려는데 아래와 같은 에러가 발생했을 경우 Exception in thread "main" java.lang.IllegalStateException: CGLIB is required to process @Configuration classes. Either add CGLIB to the classpath or remove the following @Configuration bean definitions: 해당 프로젝트에 CGLIB 라이브러리를 pom.xml에 추가하면 해결된다. cglib cglib 2.2.2 -CGLIB 라이브러리 관련 Maven Repository URL https://mvnrepository.com/artifact/cglib/cglib
util 네임스페이스를 사용하려고 xml 파일에 xmlns:util 구문을 추가했다. 하지만 프로그램 실행 시 아래와 같은 에러가 발생했다. 이를 해결하기 위해서는 ... 와 같이 xsi:schemaLocation에 util 네임스페이스와 관련된 http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd 를 추가시키면 문제가 해결된다.
째로스
'스프링' 카테고리의 글 목록