본문으로 바로가기

토비의 스프링 5장 'Service 추상화'부터 시작하기 위한 준비



토비의 스프링3는 기본적으로 사용하는 라이브러리가 있기 때문에 그걸 먼저 import 해놓고 해야 편하다.


build.gradle을 아래와 같이 setting 해놓고 시작하는게 좋다.


build.gradle

group 'java'
version '1.0-SNAPSHOT'

apply plugin: 'java'
apply plugin: 'idea'

sourceCompatibility = 1.8

repositories {
mavenCentral()
}

dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
compile 'mysql:mysql-connector-java:5.1.6'
compile 'org.springframework:spring-webmvc:4.1.6.RELEASE'
compile 'org.springframework:spring-jdbc:4.1.6.RELEASE'
compile 'org.springframework:spring-test:4.1.6.RELEASE'

}


나는 mysql을 쓰므로mysql connector를 import 해주었다.


spring webmvc를 import하면 spring-core, spring-context, spring-beans가 같이 import된다.

spring-jdbc와 spring-test는 같이 import가 안되므로 import 해주면 된다.



library는 위와 같이 설정 해주면 되고 UserDao interface를 아래와 같이 만들어준다.


UserDao.java

public interface UserDao {

    void add(User user);
User get(String id);
void deleteAll();
}


그리고 위에서 선언한 UserDao를 구현한 UserDaoJdbc를 만들어준다.


UserDaoJdbc.java

public class UserDaoJdbc implements UserDao{
private DataSource dataSource;
private JdbcTemplate jdbcTemplate;


public void add(User user){
this.jdbcTemplate.update("insert into users(id, name, password) values(?,?,?)", user.getId(), user.getName(), user.getPassword());
}

public User get(String id){
return this.jdbcTemplate.queryForObject("select * from users where id=?", new Object[]{id},
new RowMapper<User>() {
@Override
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
user.setId(rs.getString("id"));
user.setName(rs.getString("name"));
user.setPassword(rs.getString("password"));
return user;
}
});
}

@Override
public void deleteAll() {
this.jdbcTemplate.execute("delete from users");
}

public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
this.jdbcTemplate = new JdbcTemplate(dataSource);
}

}



Do는 아래와 같이 만들어준다.


User.java

public class User {
String id;
String name;
String password;

public User() {
}

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

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

}

이 클래스는 만들기 쉬우나 혹시해서 그냥 소스 올려놓는거임.




main/resources/application.xml 은 아래와 같이 만들어준다.



applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

<bean id="userDao" class="com.UserDaoJdbc">
<property name="dataSource" ref="dataSource"/>
</bean>

<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/service_db"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>

</beans>



Test Class는 아래와 같이 만들어준다.

UserDaoTest.java

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/applicationContext.xml")
public class UserDaoJdbcTest {

@Autowired
private UserDaoJdbc userDaoJdbc;
private User user1, user2, user3;

@Before
public void setUp() throws Exception {
this.user1 = new User("oceanfog", "kyeongrok", "kim");
}

@Test
public void testBean() throws Exception {
assertNotNull(userDaoJdbc);
}

@Test
public void testAddandGet() throws Exception {
userDaoJdbc.deleteAll();

userDaoJdbc.add(user1);

User user = userDaoJdbc.get(user1.id);
assertEquals("oceanfog", user.getId());
}

}



이렇게 시작하는게 좋을 것 같다.


end.





댓글을 달아 주세요