Languages/java

[Spring] 전자정부프레임 사용하기

뱅타 2021. 4. 24. 17:09

우선 전자정부프레임워크와 spring은 매우 밀접한 관계를 가지고 있습니다.

spring에 대해서는 다음에 다시 공부해 보려고 합니다.

spring을 사용하려면 이러한 것들을 설치해야 하는데 maven을 이용하면 간편하게 설치할 수 있습니다.

우선 spring의 구조에서 context가 어떠한 역할을 하고 있는지만 알고 있으면 됩니다.

위의 사진과 같이 maven의 특징을 이용해서 spring context dependency를 가지고 옵니다.

 

maven의 특징

  • 하나의 라이브러리를 등록하면 의존관계에 잇는 모든 것들을 알아서 설치한다.
  • 한마디로 Context만 가져오면 다 가져옵니다.

 

spring-context dependency 받기

 

전자정부의 spring 버전이 4.3.25를 쓰기에 동일한 버전을 받아줍니다.

Dependency Hierarchy탭에 들어가서 확인하면 context 뿐만 아니라 의존관계인 다른 것들도 같이 설치되는 것을 알 수 있습니다.

log4j 및 slf4j 사용

위와 같은 방식으로 설치하면 됩니다.

<!-- logging framework --> 		<dependency> 			<groupId>org.apache.logging.log4j</groupId> 			<artifactId>log4j-api</artifactId> 			<version>$</version> 		</dependency> 		<dependency> 			<groupId>org.apache.logging.log4j</groupId> 			<artifactId>log4j-core</artifactId> 			<version>$</version> 		</dependency> 		<dependency> 			<groupId>org.apache.logging.log4j</groupId> 			<artifactId>log4j-slf4j-impl</artifactId> 			<version>$</version> 		</dependency> 		<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --> 		<dependency> 			<groupId>org.slf4j</groupId> 			<artifactId>slf4j-api</artifactId> 			<version>$</version> 		</dependency>  		<dependency> 			<groupId>org.slf4j</groupId> 			<artifactId>jcl-over-slf4j</artifactId> 			<version>$</version> 		</dependency> 		<!-- https://mvnrepository.com/artifact/org.lazyluke/log4jdbc-remix --> 		<dependency> 			<groupId>org.lazyluke</groupId> 			<artifactId>log4jdbc-remix</artifactId> 			<version>0.2.7</version> 		</dependency>

spring에서 기본적으로 사용하는 common-loggin을 빼줍니다.(빼주지 않을 시 log4j와 충돌이 일어날 수 있음)

 

 

이제 스프링 설정 파일을 생성해보겠습니다.

 

Spring은 기본적으로 CoC(Convention over Configuration) 방식을 적용합니다.

**

Bean : 스프링 컨테이너에 의해 생명주기가 관리되는 객체 Spring container/IoC container/DI container/Bean container

 

** 이렇게 spring 설정 파일을 관리할 수 있습니다.

 

 

Spring은 CoC를 따르기도 하지만 자바빈규약을 따르기도 합니다.

 

 

 

** 주의할 점.

  • name은 변수명이 아니라 setter명이다.(메서드)
  • 세터 는 기본 생성자가 있다는 전제 하에 동작
  • Spring은 기본적으로 singleton으로 동작한다.
  • 만약 매 호출 시마다 새로운 객체를 생성하고 싶다면 scope를 설정해야 한다.

 

모든 빈들에 대해 lazy-init 설정(true일 시 호출할때까지 기다림) 및 singleton에서 prototype으로 변경

 

 

 

 

728x90
반응형