몽땅뚝딱 개발자

[JAVA/Spring Boot] TodoList 만들기(6) - Main Application 본문

Development/Spring Framework

[JAVA/Spring Boot] TodoList 만들기(6) - Main Application

레오나르도 다빈츠 2021. 6. 13. 13:00

📄 ApiSwaggerApplication.java

package com.moddk.swagger;

import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

@SpringBootApplication
public class ApiSwaggerApplication {

	public static void main(String[] args) {
		SpringApplication.run(ApiSwaggerApplication.class, args);
	}
	
	@Bean
	public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
		SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
		sessionFactory.setDataSource(dataSource);

		Resource[] res = new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml");
		sessionFactory.setMapperLocations(res);

		return sessionFactory.getObject();
	}

}

 

 

 

 

 

◽ @EnableAutoConfiguration 어노테이션

메인 어플리케이션의 @SpringBootApplication 어노테이션 안에 선언되어있다.

@EnableAutoConfiguration는 클래스 경로에 지정된 내용을 기반으로 설정자동화를 수행한다.

 

@ComponentScan과 다른 점은 @Component이 붙은 Bean을 스캔하여 등록하는 @ComponentScan과 달리

spring.factories(META-INF 안에 있다. ) 파일에 사전에 정의한 AutoConfiguration 내용에 의해 자동으로 Bean생성이 된다.

@SpringBootApplication가 있는 위치부터 읽기때문에 모든 패키지를 검색할 수 있도록 프로젝트의 가장 상단에 위치해야한다.

 

@SpringBootApplication 어노테이션 안의 어노테이션

1) @Target(ElementType.TYPE)
2) @Retention(RetentionPolicy.RUNTIME)
3) @Documented
4) @Inherited
5) @SpringBootConfiguration
6) @EnableAutoConfiguration
7) @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })

 

 

 

 

◽ @ComponentScan 어노테이션

이 어노테이션은 아래의 어노테이션을 찾아 빈으로 등록한다.

@Component
@Configuration
@Repository
@Service
@Controller
@RestController

 

 

 

 

 

◽ DataSource 객체

DataSource는 application.properties에 설정한 DB 정보이다.

프로퍼티에 설정한 값을 코드로 구현하면 아래와 같다.

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/todo?characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=1234
@Bean
public DataSource dataSource() {
  return DataSourceBuilder.create()
    .url("jdbc:mysql://localhost:3306/todo?characterEncoding=UTF-8&serverTimezone=UTC")
    .driverClassName("com.mysql.cj.jdbc.Driver")
    .username("root")
    .password("1234")
    .build();
}

 

 

 

 

 

◽ SqlSessionFactory

myBatis를 스프링과 함께 사용하기위해서는 sqlSessionFactory와 mapper 인터페이스가 필요하다.

SqlSessionFactory는 SqlSession을 생성하는 객체이다.

생성된 SqlSession는 mapping 구문을 실행(=쿼리를 실행)하거나 커밋을 하기위해 사용된다.

그리고 myBatis는 세션이 필요하지 않은 상태가 되면 닫아준다.

 

 

 

 


 

 

 

 

참조

 

 

[Spring Boot] 게시판 만들기 2 : DB 연동 및 Mybatis 설정

Spring Boot 게시판 만들기 2 : DB 연동 및 Mybatis 설정 Spring Boot - ver 2.1.8 Gradle Java - ver 1.8 application.properties 내에 datasource 관련 설정값 선언 1 2 3 4 spring.datasource.driver..

developyo.tistory.com

 

 

[Spring][Spring boot] @SpringBootApplication 이란?

다들 스프링부트 프로젝트를 처음 시작할때 @SpringBootApplication를 한번씩 보셨을 것입니다. 오늘은 @SpringBootApplication에 대해서 간단히 알아보겠습니다. @SpringBootApplication 이란? @SpringBootAplica..

coooding.tistory.com

 

 

 

 


개인적으로 공부한 내용을 정리하는 블로그로
잘못된 개념을 게시하지않도록 주의하고 있으나 오류가 있을 수 있습니다.

Comments