1.1. User ¶
- 보를 바빈 따르는 브를 면 리.
- 바빈(JavaBean)
- 빈 .
- 미는 능 .
-
- 미 는 디 를
- getter setter를 , 는 를 브를 미.
- 미 는 디 를
- 빈 .
- 바빈(JavaBean)
- User : 보 바빈
package springbook.user.domain;
public class User {
String id;
String name;
String 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;
}
}
- USER 블
| 명 | ||
| UserId | VARCHAR(10) | Primary Key |
| Name | VARCHAR(20) | Not Null |
| Password | VARCHAR(20) | Not Null |
1.2. UserDao ¶
- UserDao : JDBC를 등, 능 는 DAO
package springbook.user.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import springbook.user.domain.User;
public class UserDao {
public void add(User user) throws SQLException, ClassNotFoundException{
Class.forName("com.mysql.jdbc.Driver");
Connection c = DriverManager.getConnection("jdbc:mysql://localhost/springbook", "spring", "book");
PreparedStatement ps = c.prepareStatement("insert into users(id, name, password) values(?,?,?)");
ps.setString(1, user.getId());
ps.setString(2, user.getName());
ps.setString(3, user.getPassword());
ps.executeUpdate();
ps.close();
c.close();
}
public User get(String id) throws ClassNotFoundException, SQLException{
Class.forName("com.mysql.jdbc.Driver");
Connection c = DriverManager.getConnection("jdbc:mysql://localhost/springbook", "spring", "book");
PreparedStatement ps = c.prepareStatement("select * from users where id = ?");
ps.setString(1, id);
ResultSet rs = ps.executeQuery();
rs.next();
User user = new User();
user.setId(rs.getString("id"));
user.setName(rs.getString("name"));
user.setPassword(rs.getString("password"));
rs.close();
ps.close();
c.close();
return user;
}
}
1.3. main() ¶
- 만 대 동는 면
- DAO 능 는 리 만들 배 뒤 브를 보
- UserDao 동는 무 복 .
- UserDao 동는 무 복 .
- 브 만들.
- DAO 능 는 리 만들 배 뒤 브를 보
- main 메를
public static void main(String[] args) throws SQLException, ClassNotFoundException {
UserDao dao = new UserDao();
User user = new User();
user.setId("zeropage");
user.setName("");
user.setPassword("zp");
dao.add(user);
System.out.println(user.getId() + "등 ");
User user2 = dao.get(user.getId());
System.out.println(user2.getName());
System.out.println(user2.getPassword());
System.out.println(user2.getId() + " ");
}
- 면 .
zeropage 등 zp zeropage
2.1. 리 ¶
- 리 브 는 끊 변. 면 변 떻 대 ?
- 대 : 변 .
- 동 능 변
- 몇 만 뒤 문 동 보는데 5 리는 > 를 는데 5 리 뒤 문 동는 는
- 몇 만 뒤 문 동 보는데 5 리는 > 를 는데 5 리 뒤 문 동는 는
- 떻?
- 리
- 리
- 동 능 변
- 모 변 번 만 따른 는 많.
- 리
- 데 .
- 끼리는 , 른 능 떨 리.
- 데 .
- 리
2.2.1. UserDao ¶
- DB 떻 .
- 등/를 SQL문 Statement를 만들 는 .
- 리를 close는 .
- 문 : DB 브
- add() 메 get() 메 동 복 .
- 백 DAO 메를 만 면
- DB 는 백데 복
- DB 는 방 바뀌면 백데를 .
- DB 는 백데 복
- 백 DAO 메를 만 면
- add() 메 get() 메 동 복 .
2.2.2. 복 메 ¶
- 는 복 를 리.
- UserDao : getConnection() 메를 복
public void add(User user) throws SQLException, ClassNotFoundException {
Connection c = getConnection();
…
}
public void get(String id) throws SQLException, ClassNotFoundException {
Connection c = getConnection();
…
}
private Connection getConnection() throws SQLException, ClassNotFoundException {
Class.forName("com.mysql.jdbc.Driver");
Connection c = DriverManager.getConnection("jdbc:mysql://localhost/springbook", "spring", "book");
}
- 백 DAO 메 DB 는 방 바뀌면 getConnection() 메만 면 .
3. DAO ¶
- 따 브
- 르
- 변 르
- 변 르는 변 , 르는 미
- 변 르는 변 , 르는 미
- 를 만들놓 변를 는 방 -> 불
- 르
- 1.3.1 리
- 른 를 독립 리보
- 를 는 능 변 내부 를 변 더 를 만는 (리링)
- 리링 능 변 는 . 를 .
- 를 는 능 변 내부 를 변 더 를 만는 (리링)
- 리 는 를 .
- 른 를 독립 리보
- 1.3.2
- 리 낮 를 는 .
- 떤 들 내 를 따 리내는
- interface
- 보 능
- 떤 들 내 를 따 리내는
- 리 낮 를 는 .
- 1.3.3 리
- 는 른 독립 를 면 리.
- .
- .
-
- 브 브 미.
- 런 : 브 란 런 브 른 브 런를 는 .
- 방
- 브를 내부
- 메를 부 받는. ()
- 브를 내부
- 브 브 미.
- 는 른 독립 를 면 리.
- 1.3.4
- 방 (OCP) (SOLID)
- 모듈 는 변는
- 모듈 는 변는
- 높 낮
- 방 리
- 높
- 변 모듈 변는 부 는 미.
- 변 모듈 변는 부 는 미.
- 낮
- 높 보 민
- 란 브 는 른 브 변를 는 를 미.
- 변 른 모듈 브 는 .
- 높 보 민
- 방 리
- 략
- 디 부
- 변 리 를 부 리, 를 를 따 바 는
- 디 부
- 방 (OCP) (SOLID)
- .. 링란?
- 디 럽 들 는
- 디 럽 들 는
4. (IoC) ¶
- 1.4.1 브 리
- 리
- 방 만들 브를 돌.
- 리 - 브를 는 브를 는 리는 .
- DaoFactory : 리 는 브 를 는 브를 리.
- 방 만들 브를 돌.
- 리
- 1.4.2 브 리
- 브 복 리
- 브 복 리
public class DaoFactory{
// ConnectionMaker를 는 복됨
public UserDao userDao( ){
return new UserDao(new DConnectionMaker());
}
public AccountDao accountDao( ){
return new AccountDao(new DConnectionMaker());
}
public MessageDao messageDao( ){
return new MessageDao(new DConnectionMaker());
}
}
리
public class DaoFactory{
public UserDao userDao( ){
return new UserDao(connectionMaker());
}
public AccountDao accountDao( ){
return new AccountDao(connectionMaker());
}
public MessageDao messageDao( ){
return new MessageDao(connectionMaker());
}
// 복 리
public ConnectionMaker connectionMaker(){
return new DConnectionMaker();
}
}
리 - 1.4.3
- 란?
- 램 뒤바뀌는
- 른 대 .
- 는 대 .
- 브러리는 리 능동 .
- 면 는 리 .
- 브러리는 리 능동 .
- 램 뒤바뀌는
- 란?
- 링 IoC를 .
- 는 명 념 .
- 는 명 념 .
5. 링 IoC ¶
5.1 브 리를 링 IoC
- 5.1.1
- 5.1.2
- 빈 리 는 리 보를 만는 방 ->
- 1. 링 빈 리를 브 는 @Configuration는 노 .
- 1. 링 빈 리를 브 는 @Configuration는 노 .
- 빈 리 는 리 보를 만는 방 ->
@Configuration
public class DaoFactory{}
- 2. 브를 만들는 메는 @Bean는 노 붙.
@Configuration
public class DaoFactory{
@Bean
public UserDao userDao(){ ...}
}
- 만들 보를 는 리 및 빈 ->
public static void main(Strings[] args) throws ClassNotFoundException, SQLException{
ApplicatioContext context = new AnnotationConfigApplicationContext(DaoFactory.class);
}
- 2. ApplicationContext getBean()메를 등 빈 브를 .
public static void main(Strings[] args) throws ClassNotFoundException, SQLException{
ApplicatioContext context = new AnnotationConfigApplicationContext(DaoFactory.class);
UserDao dao = context.getBean("userDao", UserDao.class);
}
getBean()메 : ApplicationContext 리는 브를 는 메. "" 들는 ApplicationContext 등 빈 . 빈 는 메를 를 면 . 는 userDao()는 메 붙 문 "" userDao 들. 메 myUserDao()면 "myUserDao" . 본 Object 리 만 바 5 릭 메 방 번 미 리 면 .
5.2 리 동방6. 리 브 ¶
6.1 리 리
- 리 는 리는 리 . 링 본 른 면 내부 는 빈 브를 모 만.
- 링 문 리는 부를 빈 만들 . 링 는 , 리는 리 .
-
- 1. private 를 문 .
- 2. 들.
- 3. 는 만 만들는 보 못.
- 4. 를 만들 문 바람 못.
- 1. private 를 문 .
- 브 변를 덮 문 . 보면 변 .
- (scope) : 링 리는 빈 는 범. 빈 본 는 내 브만 만들 는 . 따 (prototype), (request), (session) 등 .
7. (DI) ¶
- : 는 모듈 변 른 미는 .
- (DI)? : (Dependency Injection)란 링 (IoC) 방 더 명 내 .
-
- 모델 는 런 러 는. 러 는 만 .
- 런 는 리 3 .
- 는 브 대 런를 부 () 만들.
- 모델 는 런 러 는. 러 는 만 .
-
- DI : DI를 받 브를 받는데 면 런 러 문 는 브를 바는 변, 대 .
- 링 DI
- Bean : 링는 DI를 Bean 브를 리.
- Bean Factory : 런 를 Bean Factory Bean 리 브 를 맺.
- (Dependency Lookup) : 링 DI방 는 DI를 받는 브 Bean . 만 DL 면 Bean 브 를 .
- Bean : 링는 DI를 Bean 브를 리.
8. XML ¶
- XML
- 링는 DI를 만들 를 는 방 . XML 문 루 빌 .
- <beans> : @Configuration 대. 러 <bean> 들.
- <bean> : @Bean 붙 바 메 대.
- <id> : @Bean 메 . getBean() .
- <class> : @Bean 메 return는 . 모 .
- <property> : @Bean 메 DI를 . 메.
- <name> : 메 set부 머 부 .
- <ref> : 메를 브 Bean id.
- <value> : 른 Bean 브 <ref> 대 . 링 변 문 링, 브 등 .
- <name> : 메 set부 머 부 .
- <id> : @Bean 메 . getBean() .
- <bean> : @Bean 붙 바 메 대.
- <beans> : @Configuration 대. 러 <bean> 들.
- (Java )
@Configuration
class DaoFactory {
...
@Bean
public ConnectionMaker connectionMaker() {
return new DConnectionMaker();
}
@Bean
userDao setConnectionMaker(connectionMaker()) {
... };
}
- (XML)
<beans> <bean id="myConnectionMaker" class="springbook.user.dao.DConnectionMaker" /> <bean id="userDao" class="springbook.dao.UserDao"> <property name="connectionMaker ref="myConnectionMaker" /> </bean> </beans>
- XML 는 리
- 리 GenericXmlApplicationContext("xml ")를 를 .
- 리 GenericXmlApplicationContext("xml ")를 를 .
ApplicationContext context = new GenericXmlApplicationContext("springbook/user/dao/daoContext.xml")










