[Spring] Spring 특징

Dawon Ruby Choi·2023년 11월 9일

개요

Apache Maven : 따로 라이브러리 설치해 프로젝트에 넣을 필요 없이 알아서 찾아서 다운받아짐 (버전 정보도 통합) , pom.xml이라는 문서에 사용하고싶은 라이브러리 등록하여 자동 프로젝트 추가

Spring Fraemwork : 전자정부 프레임워크 기반 기술,

특징

🍒⭐주요 특징⭐🍒

DI 의존성 주입 : 객체 생성이 현저히 적어짐 (new Board b 등 )
프레임 워크가 직접 만든 객체를 내가 활용할 수 있게 함

제어 반전 : 컨트롤 제어의 주도권이 개발자에 있었으나 프레임워크한테 감 (하나만 잘못 만져도 페이지 자체가 실행되지 않음)

이러한 제어 반전은 대부분의 프레임워크의 특성임
ex) my Batis (DB), BootStrap (화면) 등

AOP : DELETE 같은 행위 후에 COMMIT, ROLLBACK을 자동으로 해야한다는 약속 등의 설정

DATA 접근 계층 : MyBatis 라이브러리와 spring과 mybatis 연결하는 라이브러리

⭐Core Container : 09:39

⭐⭐⭐매우 중요⭐⭐⭐

기존
프로젝트 : WebServlet annotation(매 요청마다 서블릿을 만들었음 ex) list.bo) 에 url 집어넣어서 servlet mapping 진행
기존 : servlet태그와 servletmapping 이용해서 url 연결

스프링
스프링 : DispatcherServlet 하나만 만들어주고 servlet 매핑 진행
web.xml : urlpattern에 맞는 servlet 매핑되어있는 dispatcherServlet 생성

model : 어떤 값을 담을지 (컨트롤러가 리턴하는 객체)
view : 어떤 뷰로 넘어갈지 (컨트롤러가 리턴하는 객체)
viewResolver : 최종 화면을 결정하는 것

***주소값을 미리 지정해줌***
<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />

modelAndView : forward 같은 존재

기존에 서버가 실행되고 요청이 들어오면 web.xml이 제일 먼저 실행되는 구조임

dispatcher 서블릿 url을 갖고 있음 (init 객체 생성하면서 param을 가지고 있는것이 누구인지 확인)> handler Mapping과 디스패쳐 서블릿은 해당하는 컨트롤을 찾음 > view로 넘어갈 것이 있다면 ModelAndView 를 통과함 > 이 때 viewResolver와 같이 model에 담겨있던 데이터가 넘어갈 view 출력

프로젝트 구조

repository : maven이 관리할 라이브러리 저장소

spring은 한글파일을 읽지 못하기 때문에 c드라이브 아래에 집어넣거나 대안 활용

spring은 기본적으로 세가지의 패키지를 가지고 있음
:이름.이름.이름 3가지 레벨 형식으로 지정해주어야함

myapp 은 spring에서 contextPath가 됨 (blueRose, goldCat 등)
그래서 프로젝트명은 3번째로 넣어주어야함

return home은 home.jsp를 나타내는 것이었따!

beans: bean은 새로운 객체를 만드는 것

RequestMappiong이 HandlerMapping을 어노테이션화 한것!

HomeController.java
@RequestMapping(value = "/", method = RequestMethod.GET)

// "/"라는 주소값을 전달받았음
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

	<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring/root-context.xml</param-value>
	</context-param>
	
	<!-- Creates the Spring Container shared by all Servlets and Filters -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- Processes application requests -->
	<servlet>
		<servlet-name>appServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring/appServlet/💡servlet-context.xml</param-value> 
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
		
	<servlet-mapping>
		<servlet-name>appServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

</web-app>

💡객체를 만들 때 어디있는 viewresolver와 함께할지 파라미터로써 같이 참조해서 진행

welcome file != home

  1. Servers < SpringServer-config < web/xml의 welcomefile 실행
  2. project < web.xml이 덮어 씌워져서 들어옴 (index가 있는 경우 index우선 없는경우 url-pattern 안을 실행)

home.jsp는

profile
나의 코딩 다이어리🖥️👾✨

0개의 댓글