스프링부트초기설정
스프링 목록
- Spring(1) - 백엔드 초기설정
- Spring(2) -스프링 Client 파일 업로드(1)
- Spring(3) -스프링 Client 파일 업로드(2)
- Spring(4) - 백엔드 RESTFULL 로 바꾸기
- Spring(5) - 게시판 페이징 기능 추가하기
- Spring(6) - 검색 기능 추가
- Spring(7) - 프론트 ContextPath 동적 설정
스프링 부트 목록
- Spring Boot(1) - 스프링 부트 초기설정
- Spring Boot(2) - JPA 사용해 보기
- Spring Boot(3) - JPA 방향설정, 관계설정
- Spring Boot(4) - JPA 심화
- Spring Boot(5) - JPA 일대일 실습
스프링 부트 초기 설정에 관한 내용입니다.
이클립스 설정
1. UTF-8 언어 설정
(Window -> Preferences 클릭 )
- workspace - 인코딩설정 utf-8
- Java- Compiler-> (Compiler Compilance level1.8버전
- Java- Installed JREs -> Add -> Standard VM ->(\jdk1.8.0_301)
- Web->
css
,html
,jsp
인코딩 utf-8로 설정- Genteral->Content Typer -> Text 펼치기 ->java Properties File 펼치기-> Spring Propertis File ->
UTF-8
치고 업데이트 (스프링은 설정파일이 xml이 아니라 properties에서 사용 )
Spring Boot 설정
1. 실제 프로젝트 만들어주기
- 프로젝트 생성 -> new ->others.. -> spring boot-> Spring Starter Project
- Packaging : War
- java Version : 8
- Bootversion (5.2.8)
Package
: com.my (이 경로 기억할것)
- (중요! 여기가 스프링 자동으로 스캔해주는 패키지 경로)
- Selectd ->
Spring Web
추가- Selectd ->
Oracle driver
추가- Selectd ->
JDBC API
추가- Selectd ->
Mybatis FrameWork
추가- Selectd ->
Spring Boot DevTools
추가
A. form.xml 추가
<!-- JDBC용 Log4J-->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
<version>1.16</version>
</dependency>
<!-- jsp라이브러리 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
B. application.yml 작성
application.properties
-> 우클릭 ->Convert properties to .yml (들여쓰기 주의해서 할것)
#서버 설정
server:
port: 9998
servlet:
context-path: /demo
#스프링 설정
spring:
datasource:
hikari:
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
jdbc-url: jdbc:log4jdbc:oracle:thin:@localhost:1521:xe
username: hr
password: hr
maximum-pool-size: 10
minimum-idle: 2
#맵리졸버 용 프리픽스
mvc:
view:
prefix: /WEB-INF/views/
#스프링 부트 로그레벨 TRACE < DEBUG < INFO < WARN < ERROR
logging:
level:
root: info
- 맵 리졸버 prefix, suffix 사용시 @RequestMapper 사용시 String, void 리턴할때 자동으로 리턴값에 경로 붙여줌
2. Mybatis 설정 파일 추가
A. mybatis-config.xml 추가
(src/main/resources/mybatisConfig/mybatis-config.xml
)
없는 폴더는 생성
기본 패키지
바뀔시 tpye = "com.my.~~~"
이런식으로 반드시 수정할것
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 언더스코어를 자동으로 카멜케이스로 매핑해주는 기능 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<setting name="jdbcTypeForNull" value="NULL"/>
</settings>
<typeAliases>
<!-- 프로덕트vo 경로 매번 설정하기 귀찮을떈 Alias 생성 -->
<typeAlias type="com.my.product.vo.Product" alias="Product"/>
<typeAlias type="com.my.customer.vo.Customer" alias="Customer"/>
<typeAlias type="com.my.order.vo.OrderInfo" alias="OrderInfo"/>
<typeAlias type="com.my.order.vo.OrderLine" alias="OrderLine"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
<property name="username" value="hr"/>
<property name="password" value="hr"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mybatisConfig/ProductMapper.xml"/>
<mapper resource="mybatisConfig/CustomerMapper.xml"/>
<mapper resource="mybatisConfig/OrderMapper.xml"/>
</mappers>
</configuration>
B. ProductMapper.xml 추가
(src/main/resources/mybatisConfig/ProductMapper.xml
)
기본 패키지 바뀔시 namespace = "com.my.xxx"
이런식으로 반드시 수정할것
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.my.product.ProductMapper">
<select id="findAll" resultType="Product">
SELECT * FROM product ORDER BY prod_name ASC
</select>
<select id="findByNo" parameterType="string"
resultType="Product">
SELECT * FROM product WHERE prod_no= #{prodNo}
</select>
</mapper>
C. DatabaseConfiguration.java 추가
(src/main/java/com/my/config/DatabaseConfiguration.java
)
해당 내용은 mybatis-config.xml 에 자동으로 추가됨
이런식으로 만들면
config.xml
파일에 모든 정보를 안 넣어도 됨
package com.example.demo.config;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
@Configuration
@PropertySource("classpath:/application.yml")
//히카리 cp 설정부분
public class DatabaseConfiguration {
@Bean
//이 프로퍼티를 이용해서 히카리 콘피그 객체를 생성
@ConfigurationProperties(prefix="spring.datasource.hikari")
public HikariConfig hikariConfig() {
return new HikariConfig();
}
@Bean
public DataSource dataSource() throws Exception {
DataSource dataSource = new HikariDataSource(hikariConfig());
System.out.println(dataSource.toString());
return dataSource;
}
@Autowired
private ApplicationContext applicationContext;
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
//이부분이 mabatis-config.xml 에 추가해주는 부분
sqlSessionFactoryBean.setConfigLocation(applicationContext.getResource("classpath:/mybatisConfig/mybatis-config.xml"));
return sqlSessionFactoryBean.getObject();
}
}
D. DAO ,Vo, Controller 파일 알아서 각자 추가
기본 패키지
바뀔시 모든 파일들의 “com.my.xxx” 형식으로 수정할것
- ex) com.example.demo
- ex) com.my
4. 단위 테스트
src/test/java 에 스프링이 자동 스캔 해주는 패키지에 넣기
- ex) com.example.demo.dao
- ex) com.my.dao
ProductDAOOracleTest.java
package com.my.dao;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.List;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
import com.my.exception.FindException;
import com.my.product.dao.ProductDAOInterface;
import com.my.product.vo.Product;
@SpringBootTest
public class ProductDAOOracleTest {
@Autowired
@Qualifier("pDAO")
private ProductDAOInterface dao;
@Test
public void testFindByNo() throws FindException {
String prod_no = "C0001";
Product p = dao.findByNo(prod_no); //DB검색결과
String expectedProdName = "아메리카노";//예상
int expectedProdPrice = 1000;
assertEquals(expectedProdName, p.getprodName());
assertTrue(expectedProdPrice == p.getprodPrice());
}
@Test
public void testFindAll() throws FindException {
System.out.println("testSelectAll메서드호출");
List<Product>list = dao.findAll();
int expectedSize = 10; //예상
assertTrue(expectedSize == list.size());
}
}
스프링 목록
- Spring(1) - 백엔드 초기설정
- Spring(2) -스프링 Client 파일 업로드(1)
- Spring(3) -스프링 Client 파일 업로드(2)
- Spring(4) - 백엔드 RESTFULL 로 바꾸기
- Spring(5) - 게시판 페이징 기능 추가하기
- Spring(6) - 검색 기능 추가
- Spring(7) - 프론트 ContextPath 동적 설정
스프링 부트 목록