Spring Boot 맛보기

20917 단어 SpringSpring

Spring Boot란?

스프링 프레임워크를 사용하는 프로젝트를 간편하게 설정할 수 있는 스프링의 서브 프로젝트 개념이다.

스프링을 편하게 설정할 수 있으니 당연 여러가지 장점이 있다.

  • 반복되는 개발환경 구축을 위한 코드 작성등의 노력을 줄여주고 쉽고 빠르게 프로젝트를 설정 할 수 있도록 도와준다.
  • 빠르게 모든 스프링 개발에 관한 경험에 광범위한 접근을 제공한다.
    -프로젝트 환경 구축에서 큰 영역을 차지하는 비기능적인 기능들을 기본적으로 제공한다.
    (내장형 서버, 시큐리티, 외부 설정)

pom.xml

tomcat dependency 추가하는데, 

version은 삭제해준다 

<!-- [https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-jasper](https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-jasper) -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>10.0.5</version>  ⇒ 삭제하기! 
</dependency>

태그립 core 사용하고싶을 때는 pom에 얘를 추가한다 

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>

<!-- devtools : 수정했을때 자동으로 리로드해주는애 -->
<!-- [https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools](https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>

application.properties

#server
server.port=8787 // 이걸 안하면 8080 으로 연결된다 

#view
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

#encoding
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.force=true
server.servlet.encoding.enabled=true

#resources
spring.mvc.static-path-pattern=/resources/**

#jdbc 
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:xe
spring.datasource.username=kh
spring.datasource.password=kh

#mybatis alias 
mybatis.type-aliases-package=com.boot.jdbc.model.dto.MyDto

타임리프

  • #객체 $ 밸류값 @ url *포인터 (땡겨올때)

Spring Boot 에서 AOP 추가해보기

  1. pom.xml 에 dependency 추가하기
	<!-- aop 추가  -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-aop</artifactId>
		</dependency>
  1. 최상위 패키지에서 Annotation 추가해주기
package com.boot.jdbc;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.web.bind.annotation.GetMapping;

@EnableAspectJAutoProxy //aop annotation 추가해주기 
@SpringBootApplication
public class StartBoot02Application {

	public static void main(String[] args) {
		SpringApplication.run(StartBoot02Application.class, args);
	}

	@GetMapping("/")
	public String root() {
		return "index";
	}
}
  1. 공통기능을 정의하고 공통기능이 사용될 시점을 정의한다.
package com.boot.jdbc.LogAspect;


import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class LogAspect {
	Logger logger = LoggerFactory.getLogger(LogAspect.class);
	
	//around는 메소드의 실행 전 후로 공통로직을 적용하고 싶을 때 사용한다. 즉 시점을 선택해서 정의.
	//MyBoardBizImpl 의 모든 메서드 
	@Around("execution(* com.boot.jdbc.model.biz.MyBoardBizImpl.*(..))")
	public Object logging(ProceedingJoinPoint joinpoint) throws Throwable {
		logger.info("start :" +joinpoint.getSignature().getDeclaringTypeName()+"/" + joinpoint.getSignature().getName());
		Object result = joinpoint.proceed();
		logger.info("finishes :" +joinpoint.getSignature().getDeclaringTypeName()+"/"+joinpoint.getSignature().getName());
		
		
		return result;
		
	}
	

}

→ 나는 logger 라는 공통기능을 정의하고, 그 시점을 @Around로 메소드의 실행 전 후로 설정한 것

즉 , 두번째 단계에서 @EnableAspectJAutoProxy는 스프링이 자동으로 개발자의 메서드를 호출하기 전에 가로챌 수 있게한다. 이렇게 가로채야만 메서드를 사용하기 전이든 사용 후든 어떤 시점에 적용 할 수 있는것. 그러니 새롭게 정의한 LogAspect 클래스가 핵심 비즈니스 로직과 분리된 공통 로직인 것이고, 나머지 클래스들이 핵심 비즈니스인 것을 확인 할 수 있다.

참고:
https://jeong-pro.tistory.com/171

좋은 웹페이지 즐겨찾기