Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions spring-toby/java-project/build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.1'
implementation 'org.junit.jupiter:junit-jupiter:5.4.2'
testCompile 'org.junit.jupiter:junit-jupiter-api:5.3.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.1'
// https://mvnrepository.com/artifact/com.h2database/h2
testCompile group: 'com.h2database', name: 'h2', version: '1.3.148'
testCompile group: 'org.assertj', name: 'assertj-core', version: '3.15.0'

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.javabom.toby.chapter2.테스트;

public class Car {
private static final int MOVE_CONDITION = 4;
private int distance;

public Car(final int distance) {
this.distance = distance;
}

public int move(String value) {
if (isMovable(Integer.parseInt(value))) {
distance++;
}

return distance;
}

private boolean isMovable(int value) {
return MOVE_CONDITION < value;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.javabom.toby.chapter2.테스트;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.junit.jupiter.params.provider.ValueSource;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.jupiter.api.Assertions.*;

class CarTest {

@DisplayName("4 보다 큰 값일때 distance값을 증가시킨다.")
@ParameterizedTest
@ValueSource(strings = {"5", "6", "7"})
void move(String value) {
Car car = new Car(3);
assertThat(car.move(value)).isEqualTo(4);
}

@DisplayName("4 이하의 값일때 distance값은 증가하지 않는다.")
@ParameterizedTest
@ValueSource(strings = {"4", "3", "2"})
void cannotMove(String value) {
Car car = new Car(3);
assertThat(car.move(value)).isEqualTo(3);
}

@DisplayName("숫자가 아닌 값이 들어오면 Exception Throw")
@ParameterizedTest
@ValueSource(strings = {"a", "b", " ", "+"})
void exceptionThrowWhenNotNumber(String notNumber) {
Car car = new Car(1);
assertThatThrownBy(() -> car.move(notNumber))
.isInstanceOf(NumberFormatException.class);
}
}
5 changes: 5 additions & 0 deletions spring-toby/spring-project/build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework:spring-jdbc'
implementation 'org.springframework.data:spring-data-jpa'

implementation 'com.h2database:h2'

testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.javabom.toby.userdao;

import com.javabom.toby.userdao.connectionmaker.ConnectionMaker;
import com.javabom.toby.userdao.connectionmaker.LocalDBConnectionMaker;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.SimpleDriverDataSource;

import javax.sql.DataSource;

@Configuration
public class DaoFactory {

@Bean
public UserDao userDao() {
UserDao userDao = new UserDao();
userDao.setConnectionMaker(connectionMaker());
return userDao;
}

@Bean
public UserDao dataSourceUserDao() {
UserDao userDao = new UserDao();
userDao.setDataSource(dataSource());
return userDao;
}

@Bean
public ConnectionMaker connectionMaker() {
return new LocalDBConnectionMaker();
}

@Bean
public DataSource dataSource() {
SimpleDriverDataSource dataSource = new SimpleDriverDataSource();

dataSource.setDriverClass(org.h2.Driver.class);
dataSource.setUrl("jdbc:h2:mem:testdb");
dataSource.setUsername("test");
dataSource.setPassword("1234");

return dataSource;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.javabom.toby.userdao;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;

@Getter
@Setter
public class User {
private String id;
private String name;
private String password;

public User(final String id, final String name, final String password) {
this.id = id;
this.name = name;
this.password = password;
}

@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.javabom.toby.userdao;

import com.javabom.toby.userdao.connectionmaker.ConnectionMaker;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class UserDao {
private ConnectionMaker connectionMaker;
private DataSource dataSource;

public void setDataSource(final DataSource dataSource) {
this.dataSource = dataSource;
}

public void setConnectionMaker(final ConnectionMaker connectionMaker) {
this.connectionMaker = connectionMaker;
}

public void printConnectionMaker() {
this.connectionMaker.makeConnection();
}

public void add(User user) throws SQLException {
/**
* add user
*/
}

public void get(String id) throws SQLException {
/**
* find user by id;
*/
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.javabom.toby.userdao;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class UserDaoConnectionTest {
public static void main(String[] args) {
/**
* xml 설정 정보
*/
ApplicationContext genericContext = new GenericXmlApplicationContext("applicationContext.xml");
UserDao genericDao = genericContext.getBean("userDao", UserDao.class);
genericDao.printConnectionMaker();

ApplicationContext classPathContext = new ClassPathXmlApplicationContext("classPathContext.xml", UserDao.class);
UserDao classPathDao = classPathContext.getBean("userDao", UserDao.class);
classPathDao.printConnectionMaker();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.javabom.toby.userdao.connectionmaker;

import java.sql.Connection;

public interface ConnectionMaker {
void makeConnection();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.javabom.toby.userdao.connectionmaker;

import java.sql.Connection;

public class LocalDBConnectionMaker implements ConnectionMaker {
public LocalDBConnectionMaker() {
System.out.println("LocalDB created");
}

@Override
public void makeConnection() {
System.out.println("LocalDBConnection make");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.javabom.toby.userdao.connectionmaker;

public class TestDBConnectionMaker implements ConnectionMaker {
public TestDBConnectionMaker() {
System.out.println("TestDB created");
}

@Override
public void makeConnection() {
System.out.println("TestDBConnection make");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="localDBConnectionMaker" class="com.javabom.toby.userdao.connectionmaker.LocalDBConnectionMaker"/>
<bean id="testDBConnectionMaker" class="com.javabom.toby.userdao.connectionmaker.TestDBConnectionMaker"/>

<bean id="userDao" class="com.javabom.toby.userdao.UserDao">
<property name="connectionMaker" ref="localDBConnectionMaker"/>
</bean>

<bean id="dataSourceUserDao" class="com.javabom.toby.userdao.UserDao">
<property name="dataSource" ref="dataSource"/>
</bean>

<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="driverClass" value="org.h2.Driver"/>
<property name="url" value="jdbc:h2:mem:testdb"/>
<property name="username" value="test"/>
<property name="password" value="1234"/>
</bean>
</beans>
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="localDBConnectionMaker" class="com.javabom.toby.userdao.connectionmaker.LocalDBConnectionMaker"/>
<bean id="testDBConnectionMaker" class="com.javabom.toby.userdao.connectionmaker.TestDBConnectionMaker"/>

<bean id="userDao" class="com.javabom.toby.userdao.UserDao">
<property name="connectionMaker" ref="localDBConnectionMaker"/>
</bean>

<bean id="dataSourceUserDao" class="com.javabom.toby.userdao.UserDao">
<property name="dataSource" ref="dataSource"/>
</bean>

<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="driverClass" value="org.h2.Driver"/>
<property name="url" value="jdbc:h2:mem:testdb"/>
<property name="username" value="test"/>
<property name="password" value="1234"/>
</bean>
</beans>