일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- typescript
- CSS
- 제네릭
- Chart.js
- 2022
- 반복줄이기
- 레이아웃쪼개기
- javascript
- const 단언문
- 티스토리꾸미기
- react
- 누구나 자료구조와 알고리즘
- click and drag
- vue.js
- returnType
- 개발콘텐츠
- reactjs
- 폰트적용하기
- NonNullable
- 타입좁히기
- TSDoc
- 공통컴포넌트
- 리액트
- 성능최적화
- 타입스크립트
- React Native
- JS console
- utilty type
- React.js
- 커스텀
- Today
- Total
몽땅뚝딱 개발자
[JAVA/Spring Boot] TodoList 만들기(6) - Main Application 본문
[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는 세션이 필요하지 않은 상태가 되면 닫아준다.
참조
개인적으로 공부한 내용을 정리하는 블로그로
잘못된 개념을 게시하지않도록 주의하고 있으나 오류가 있을 수 있습니다.
'Development > Spring Framework' 카테고리의 다른 글
[JAVA/Spring Boot] TodoList 만들기(8) - Mapper, Service (0) | 2021.06.20 |
---|---|
[JAVA/Spring Boot] TodoList 만들기(7) - Controller (0) | 2021.06.19 |
[JAVA/Spring Boot] TodoList 만들기(5) - 스크립트 (0) | 2021.06.10 |
[JAVA/Spring Boot] TodoList 만들기(4) - DB 구조 (0) | 2021.06.09 |
[JAVA/Spring Boot] TodoList 만들기(3) - JSP 구조 및 HTML/CSS (0) | 2021.06.09 |