ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
??? ???(1)
?? ??
? ??????? ?????.
? ??? apache derby? ????? ???, ???
? ??? ??? mysql? ????? ??
? ???? ?????? ??? ?? ???, ???
??
? ???? ???? ???? ??? ??? maven
? ??????.
? ??? JDK 7 ? ???? ???.
DAO, Test Code
? ??? DAO? ??? ??? ????.
? JDBC? ???? mysql? ??? ??, ??? ?
??.
??(1)
? ??? ??? ????.
? ????? ?????
? ?? : ????? ? ??, ????? ??
? ?? : DB ??? ?? ?? / ???? : DAO ?
? ?
? ? ?? ??? ? ?? ???? ?? - ??? ?
? ???? ???, ??? ?? ???? ???
?.
??? ??
? add method ? ????
? DB ??? ?? ???? ??? ??????
? ??? ??? ?? SQL? ??? ?????.
? ??? ?? ???? close() ??.
? ? ?? ?? ? ?? : ?? ?? ??? ??
??? ??
- add(), get() method ?? ???? ????? ???? ??
private Connection getConnection() throws ClassNotFoundException,
SQLException {
Class.forName("com.mysql.jdbc.Driver");
Connection c = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1", ¡°test", "test123");
return c;
}
?? ?? ??? ?? ?? ??? ????, ?????? ?? ??? ??
refactoring?? ??, ???? ??? ??? ???? ?? extract method
?? ??.
??(2)
? ? DAO? ?? ? ???.
? N?? D?? ??? ?? DAO? ???? ???.
? DAO? ?? ?? ?? ??? ??? ?????
???. ??? N?? D?? connection? ????
? ??? ?? ?? ??? ????.
? => ?? ???? ???? ?? ???? ????
??.
Template pattern
? ?? ??? ??? ????? ??.
? ??? ?? ??? ??????? ?????
? ?? ???? ??? ??????? ???.
? ??????? ?? ???? ??? ? ??, ??
????? ???? ???? hook ????? ?
?.
???? ??
? ??? UserDao? ?? ???? ?? ???? ?
???
? ????? ? ?? ?? ???? ?? ??? ??
??. ?, ??? ??? ?? ???? ?? ??.
? DAO ???? ???? ?????,
getConnection()? ?? ??? ? DAO?? ???
? ??? ???.
???? ??
? DB ???? ?? ??? ?? ??? ???, ?? ??? ???
? ????.
? ? ???? UserDao? ????.
public class SimpleConnectionMakers {
public Connection makeNewConnection() throws ClassNotFoundException, SQLException{
Class.forName("com.mysql.jdbc.Driver");
Connection c = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1", "test", "test123!@#");
return c;
}
}
???
? ??? ??? ??? ??? ?? ??? ???? ?
????? UserDao? ??? ???? ??? ???
, ??? UserDao? ??? ???? ??.
? DB ???? ???? ???? ?? UserDao? ??
??? ??. ?, ???? ???.
? ???? ???? ???? ???? add(), get() ??
??? ?? ???? ??.
? ???? ??? UserDao? ???? ???? ???
? ?? ?? ?? ?? ??? ??? ???.
Interface ??
? ?????? ????.
? UserDao? ?????? ??? ???? ????
.
? ?? ??? ?????? ???? ????.
????? ??
public interface ConnectionMaker {
public Connection makeConnection() throws ClassNotFoundException, SQLException;
}
?????? ????
public class UserDao {
private IConnectionMaker simpleConnectionMaker;
public UserDao() {
simpleConnectionMaker = new DConnectionMaker();
}
}
?????? ??? ?? ???? ????.
??
? ????? UserDao? ???? ????? ???
? ??? ?? ??? ??. - ????? ????.
? UserDao? ConnectionMaker ??? ????? ?
??.
? ????? ?????? ???? ????.
IConnectionMaker connectionMaker = new DConnectionMaker();
UserDao dao = new UserDao(connectionMaker);
??? ??(1) OCP
? ?? ?? ??(Open-Closed Principle)
? ???? ??? ???? ?? ??? ??, ???
? ?? ??? ??.
? ????? Dao? DB ?? ????? ??? ??
??? ???? ??? ? ??. Dao? ?? ???
??? ??? ??? ??? ?? ?? ?? ??.
?? ???, ?? ??
?
? ?? ??? : ??? ??? ?, ?? ???? ??
? ???? ??? ??. ?? ??? ??? ??
??? ? ???????, ? ??? ??? ??
???? ??. ???? ? ?? ???? ?? ?
?? ?? ??? ????.
? ?? ??? : ?? ??? ????? ?? ?? ?
??.
???
? UserDaoTest? ?????? ??? ?? ??? (
?????? ????? ??)
? ?? Test? ???? ?? ????? ??, ???
? ?????? ? ???? ???.
???
? ??? ?? ??? ???? ???? ?????
???? ???? ???
? ? ???? factory?? ??.
public class DaoFactory {
public UserDao userDao() {
IConnectionMaker connectionMaker = new DConnectionMaker();
UserDao dao = new UserDao(connectionMaker);
return dao;
}
}
??? ??
? DaoFactory? ?????? ????? ?????
@Configuration // ? ???? ??? ?? ??
public class DaoFactory {
@Bean // ???? ??? ???? IoC ???
public UserDao userDao() {
return new UserDao(connectionMaker());
}
@Bean
public IConnectionMaker connectionMaker() {
return new DConnectionMaker();
}
}
ApplicationContext context = new AnnotationConfigApplicationContext(DaoFactory.class);
UserDao dao = context.getBean("userDao", UserDao.class);
? ?? ??? ???
??
? ?????? ??? ???? ??? ?
? ? ?? IoC ??? ?? ¡­?
? ?? ???? ??? ?? ??
?? ? ???
public void isEqualTest() {
DaoFactory factory = new DaoFactory();
UserDao dao1 = factory.userDao();
UserDao dao2 = factory.userDao();
System.out.println(dao1);
System.out.println(dao2);
}
public static void main(String[] args) {
IsEqualTest test = new IsEqualTest();
test.isEqualTest();
}
dao.UserDao@115d533d
dao.UserDao@603d2b3
??? ? ??? ?? ??? ????
Spring Context
public void isEqualSpringTest() {
ApplicationContext context = new
AnnotationConfigApplicationContext(DaoFactory.class);
UserDao dao1 = context.getBean("userDao", UserDao.class);
UserDao dao2 = context.getBean("userDao", UserDao.class);
System.out.println(dao1);
System.out.println(dao2);
}
dao.UserDao@101837c4
dao.UserDao@101837c4
? ?? ???? ?? ???? ???. ?? ???.
???
? ?? ????? ???? ???? ?? ? ????
??? ??? ?????? ??? ??? ???
? ??? ??? ??? ??? ??
? ??? ? ?? ??? ??
? private ?????? ?? ??
? ???? ???
? ?? ??? ??? ? ??
??? ?????
? ??? ????? ??? ???????? ?
? ??? ?? ???? ????? ??? ? ?? ?
?
? ???? ??, ??? ??? ?? ?? ??? ?
??
??? ????? - ?
??
? stateless ?? ????? ??.
? ????? ????? ?? ??, ?? ?? ??
??
? ?? ?? ?? ???? ???. ? ??? static
final?? final? ???? ?? ?? ???.
DI
? ???? ? ??? ?? ??? ???? ????
??
? ?????? ???? ??, ?? ????? ??
?? ????.
??
? ?? ??? ????? ? ? ??? ???? ??
? ?? ??? DI ???? ??.
? ???? ??? ????.
DI ??
? ??? ???
? ??? ???(setter)
? ?? ???
? ???? ?? ??? ???? ???? ?? ??
?(XML?? ???? ???? ??)
xml? ??
? @Configuration ? ?? ??? ??? xml? ?? ??
? ???? ??? ??? 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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="IconnectionMaker" class="tobiSpring.src.connection.DConnectionMaker" />
<bean id="userDao" class="tobiSpring.src.dao.UserDao">
<property name="connectionMaker" ref="connectionMaker" />
</bean>
</beans>
??
? <beans> == @Configuration
? <bean id=¡°methodName¡±> == @Bean methodName()
? class=¡° ¡­BeanClass¡±> == return new BeanClass();
? userDao.setConnectionMaker(connectionMaker());
? == <property name=¡°connectionMaker¡± ref=¡°connectionMaker¡± />

More Related Content

What's hot (20)

?????????? ?????????
?????????? ??????????????????? ?????????
?????????? ?????????
Haeil Yi
?
Java JPA
Java JPAJava JPA
Java JPA
Yonghoon Ji
?
ORM? ??? ??? ??, ?? ??
ORM? ??? ??? ??, ?? ??ORM? ??? ??? ??, ?? ??
ORM? ??? ??? ??, ?? ??
Javajigi Jaesung
?
???? ??? ????? ????????? (6?? : ????? ?????!)
???? ??? ????? ????????? (6?? : ????? ?????!)???? ??? ????? ????????? (6?? : ????? ?????!)
???? ??? ????? ????????? (6?? : ????? ?????!)
DK Lee
?
DDD ???? (?? Final ??)
DDD ???? (?? Final ??)DDD ???? (?? Final ??)
DDD ???? (?? Final ??)
beom kyun choi
?
Ksug2015 jpa4 ??????????????
Ksug2015 jpa4 ??????????????Ksug2015 jpa4 ??????????????
Ksug2015 jpa4 ??????????????
Younghan Kim
?
???? ??? ????? ????????? (9?? : ???? ?? ¨C ???? ?)
???? ??? ????? ????????? (9?? : ???? ?? ¨C ???? ?)???? ??? ????? ????????? (9?? : ???? ?? ¨C ???? ?)
???? ??? ????? ????????? (9?? : ???? ?? ¨C ???? ?)
DK Lee
?
Ksug2015 - JPA1, JPA ??
Ksug2015 - JPA1, JPA ??Ksug2015 - JPA1, JPA ??
Ksug2015 - JPA1, JPA ??
Younghan Kim
?
Java start01 in 2hours
Java start01 in 2hoursJava start01 in 2hours
Java start01 in 2hours
Kenu, GwangNam Heo
?
React ???? 2??
React ???? 2??React ???? 2??
React ???? 2??
?? ?
?
Android Network
Android NetworkAndroid Network
Android Network
cooddy
?
Ksug2015 - JPA3, JPA ????????
Ksug2015 - JPA3, JPA ????????Ksug2015 - JPA3, JPA ????????
Ksug2015 - JPA3, JPA ????????
Younghan Kim
?
???? ??? ????? ????????? (7?? : ???, ????, ????)
???? ??? ????? ????????? (7?? : ???, ????, ????)???? ??? ????? ????????? (7?? : ???, ????, ????)
???? ??? ????? ????????? (7?? : ???, ????, ????)
DK Lee
?
4-3. jquery
4-3. jquery4-3. jquery
4-3. jquery
JinKyoungHeo
?
[115] clean fe development_???????
[115] clean fe development_???????[115] clean fe development_???????
[115] clean fe development_???????
NAVER D2
?
?? Redux
?? Redux?? Redux
?? Redux
Leonardo YongUk Kim
?
[162] jpa?? ????? ???? ?????? ????? ?????
[162] jpa?? ????? ???? ?????? ????? ?????[162] jpa?? ????? ???? ?????? ????? ?????
[162] jpa?? ????? ???? ?????? ????? ?????
NAVER D2
?
Java in 2 hours
Java in 2 hoursJava in 2 hours
Java in 2 hours
Kenu, GwangNam Heo
?
???? ??? ????? ????????? (4?? : MVC)
???? ??? ????? ????????? (4?? : MVC)???? ??? ????? ????????? (4?? : MVC)
???? ??? ????? ????????? (4?? : MVC)
DK Lee
?
???? ORM ??? | Devon 2012
???? ORM ??? | Devon 2012???? ORM ??? | Devon 2012
???? ORM ??? | Devon 2012
Daum DNA
?
?????????? ?????????
?????????? ??????????????????? ?????????
?????????? ?????????
Haeil Yi
?
???? ??? ????? ????????? (6?? : ????? ?????!)
???? ??? ????? ????????? (6?? : ????? ?????!)???? ??? ????? ????????? (6?? : ????? ?????!)
???? ??? ????? ????????? (6?? : ????? ?????!)
DK Lee
?
Ksug2015 jpa4 ??????????????
Ksug2015 jpa4 ??????????????Ksug2015 jpa4 ??????????????
Ksug2015 jpa4 ??????????????
Younghan Kim
?
???? ??? ????? ????????? (9?? : ???? ?? ¨C ???? ?)
???? ??? ????? ????????? (9?? : ???? ?? ¨C ???? ?)???? ??? ????? ????????? (9?? : ???? ?? ¨C ???? ?)
???? ??? ????? ????????? (9?? : ???? ?? ¨C ???? ?)
DK Lee
?
Ksug2015 - JPA1, JPA ??
Ksug2015 - JPA1, JPA ??Ksug2015 - JPA1, JPA ??
Ksug2015 - JPA1, JPA ??
Younghan Kim
?
React ???? 2??
React ???? 2??React ???? 2??
React ???? 2??
?? ?
?
Android Network
Android NetworkAndroid Network
Android Network
cooddy
?
Ksug2015 - JPA3, JPA ????????
Ksug2015 - JPA3, JPA ????????Ksug2015 - JPA3, JPA ????????
Ksug2015 - JPA3, JPA ????????
Younghan Kim
?
???? ??? ????? ????????? (7?? : ???, ????, ????)
???? ??? ????? ????????? (7?? : ???, ????, ????)???? ??? ????? ????????? (7?? : ???, ????, ????)
???? ??? ????? ????????? (7?? : ???, ????, ????)
DK Lee
?
[115] clean fe development_???????
[115] clean fe development_???????[115] clean fe development_???????
[115] clean fe development_???????
NAVER D2
?
[162] jpa?? ????? ???? ?????? ????? ?????
[162] jpa?? ????? ???? ?????? ????? ?????[162] jpa?? ????? ???? ?????? ????? ?????
[162] jpa?? ????? ???? ?????? ????? ?????
NAVER D2
?
???? ??? ????? ????????? (4?? : MVC)
???? ??? ????? ????????? (4?? : MVC)???? ??? ????? ????????? (4?? : MVC)
???? ??? ????? ????????? (4?? : MVC)
DK Lee
?
???? ORM ??? | Devon 2012
???? ORM ??? | Devon 2012???? ORM ??? | Devon 2012
???? ORM ??? | Devon 2012
Daum DNA
?

Similar to ??? ??? - DI (20)

[??? ??? 1??] ???
[??? ??? 1??] ???[??? ??? 1??] ???
[??? ??? 1??] ???
AnselmKim
?
UML? ??? Design Pattern 2024-07-06 Korean
UML? ??? Design Pattern 2024-07-06 KoreanUML? ??? Design Pattern 2024-07-06 Korean
UML? ??? Design Pattern 2024-07-06 Korean
Daeyoung Hwang
?
XE ?? ???(2014-04-26) - ??? "XE ?? ???"
XE ?? ???(2014-04-26) - ??? "XE ?? ???"XE ?? ???(2014-04-26) - ??? "XE ?? ???"
XE ?? ???(2014-04-26) - ??? "XE ?? ???"
XpressEngine
?
Design patterns
Design patternsDesign patterns
Design patterns
Joshua Yoon
?
[Dev rookie]designpattern
[Dev rookie]designpattern[Dev rookie]designpattern
[Dev rookie]designpattern
?? ?
?
???? ??? ????? ????????? (5?? : ??? ?????)
???? ??? ????? ????????? (5?? : ??? ?????)???? ??? ????? ????????? (5?? : ??? ?????)
???? ??? ????? ????????? (5?? : ??? ?????)
DK Lee
?
Effective java
Effective javaEffective java
Effective java
Haeil Yi
?
Sql ?? ?? ?? ????
Sql ?? ?? ?? ????Sql ?? ?? ?? ????
Sql ?? ?? ?? ????
ssuser776e2d
?
?? ?? part2
?? ?? part2?? ?? part2
?? ?? part2
Minseok Jang
?
Sql ?? ?? ??
Sql ?? ?? ??Sql ?? ?? ??
Sql ?? ?? ??
ssuser776e2d
?
?? ??? ? ??
?? ??? ? ???? ??? ? ??
?? ??? ? ??
?? ?
?
[??? ??? 1??] ????? ????
[??? ??? 1??] ????? ????[??? ??? 1??] ????? ????
[??? ??? 1??] ????? ????
AnselmKim
?
Devon 2011-b-5 ???? ??? ?? ???
Devon 2011-b-5 ???? ??? ?? ???Devon 2011-b-5 ???? ??? ?? ???
Devon 2011-b-5 ???? ??? ?? ???
Daum DNA
?
Introduction to Fork Join Framework_SYS4U I&C
Introduction to Fork Join Framework_SYS4U I&CIntroduction to Fork Join Framework_SYS4U I&C
Introduction to Fork Join Framework_SYS4U I&C
sys4u
?
??????? ????????
??????? ??????????????? ????????
??????? ????????
Hun Yong Song
?
????? 1~13
????? 1~13????? 1~13
????? 1~13
Shin heemin
?
Head first????? 1~13_??_??
Head first????? 1~13_??_??Head first????? 1~13_??_??
Head first????? 1~13_??_??
HoJun Sung
?
11? ???
11? ???11? ???
11? ???
kidoki
?
LucideWorks Banana ??
LucideWorks Banana ?? LucideWorks Banana ??
LucideWorks Banana ??
SuHyun Jeon
?
[??? ??? 1??] ???
[??? ??? 1??] ???[??? ??? 1??] ???
[??? ??? 1??] ???
AnselmKim
?
UML? ??? Design Pattern 2024-07-06 Korean
UML? ??? Design Pattern 2024-07-06 KoreanUML? ??? Design Pattern 2024-07-06 Korean
UML? ??? Design Pattern 2024-07-06 Korean
Daeyoung Hwang
?
XE ?? ???(2014-04-26) - ??? "XE ?? ???"
XE ?? ???(2014-04-26) - ??? "XE ?? ???"XE ?? ???(2014-04-26) - ??? "XE ?? ???"
XE ?? ???(2014-04-26) - ??? "XE ?? ???"
XpressEngine
?
[Dev rookie]designpattern
[Dev rookie]designpattern[Dev rookie]designpattern
[Dev rookie]designpattern
?? ?
?
???? ??? ????? ????????? (5?? : ??? ?????)
???? ??? ????? ????????? (5?? : ??? ?????)???? ??? ????? ????????? (5?? : ??? ?????)
???? ??? ????? ????????? (5?? : ??? ?????)
DK Lee
?
Effective java
Effective javaEffective java
Effective java
Haeil Yi
?
?? ??? ? ??
?? ??? ? ???? ??? ? ??
?? ??? ? ??
?? ?
?
[??? ??? 1??] ????? ????
[??? ??? 1??] ????? ????[??? ??? 1??] ????? ????
[??? ??? 1??] ????? ????
AnselmKim
?
Devon 2011-b-5 ???? ??? ?? ???
Devon 2011-b-5 ???? ??? ?? ???Devon 2011-b-5 ???? ??? ?? ???
Devon 2011-b-5 ???? ??? ?? ???
Daum DNA
?
Introduction to Fork Join Framework_SYS4U I&C
Introduction to Fork Join Framework_SYS4U I&CIntroduction to Fork Join Framework_SYS4U I&C
Introduction to Fork Join Framework_SYS4U I&C
sys4u
?
Head first????? 1~13_??_??
Head first????? 1~13_??_??Head first????? 1~13_??_??
Head first????? 1~13_??_??
HoJun Sung
?
LucideWorks Banana ??
LucideWorks Banana ?? LucideWorks Banana ??
LucideWorks Banana ??
SuHyun Jeon
?

??? ??? - DI

  • 2. ?? ?? ? ??????? ?????. ? ??? apache derby? ????? ???, ??? ? ??? ??? mysql? ????? ?? ? ???? ?????? ??? ?? ???, ??? ?? ? ???? ???? ???? ??? ??? maven ? ??????. ? ??? JDK 7 ? ???? ???.
  • 3. DAO, Test Code ? ??? DAO? ??? ??? ????. ? JDBC? ???? mysql? ??? ??, ??? ? ??.
  • 4. ??(1) ? ??? ??? ????. ? ????? ????? ? ?? : ????? ? ??, ????? ?? ? ?? : DB ??? ?? ?? / ???? : DAO ? ? ? ? ? ?? ??? ? ?? ???? ?? - ??? ? ? ???? ???, ??? ?? ???? ??? ?.
  • 5. ??? ?? ? add method ? ???? ? DB ??? ?? ???? ??? ?????? ? ??? ??? ?? SQL? ??? ?????. ? ??? ?? ???? close() ??. ? ? ?? ?? ? ?? : ?? ?? ??? ??
  • 6. ??? ?? - add(), get() method ?? ???? ????? ???? ?? private Connection getConnection() throws ClassNotFoundException, SQLException { Class.forName("com.mysql.jdbc.Driver"); Connection c = DriverManager.getConnection( "jdbc:mysql://127.0.0.1", ¡°test", "test123"); return c; } ?? ?? ??? ?? ?? ??? ????, ?????? ?? ??? ?? refactoring?? ??, ???? ??? ??? ???? ?? extract method ?? ??.
  • 7. ??(2) ? ? DAO? ?? ? ???. ? N?? D?? ??? ?? DAO? ???? ???. ? DAO? ?? ?? ?? ??? ??? ????? ???. ??? N?? D?? connection? ???? ? ??? ?? ?? ??? ????. ? => ?? ???? ???? ?? ???? ???? ??.
  • 8. Template pattern ? ?? ??? ??? ????? ??. ? ??? ?? ??? ??????? ????? ? ?? ???? ??? ??????? ???. ? ??????? ?? ???? ??? ? ??, ?? ????? ???? ???? hook ????? ? ?.
  • 9. ???? ?? ? ??? UserDao? ?? ???? ?? ???? ? ??? ? ????? ? ?? ?? ???? ?? ??? ?? ??. ?, ??? ??? ?? ???? ?? ??. ? DAO ???? ???? ?????, getConnection()? ?? ??? ? DAO?? ??? ? ??? ???.
  • 10. ???? ?? ? DB ???? ?? ??? ?? ??? ???, ?? ??? ??? ? ????. ? ? ???? UserDao? ????. public class SimpleConnectionMakers { public Connection makeNewConnection() throws ClassNotFoundException, SQLException{ Class.forName("com.mysql.jdbc.Driver"); Connection c = DriverManager.getConnection( "jdbc:mysql://127.0.0.1", "test", "test123!@#"); return c; } }
  • 11. ??? ? ??? ??? ??? ??? ?? ??? ???? ? ????? UserDao? ??? ???? ??? ??? , ??? UserDao? ??? ???? ??. ? DB ???? ???? ???? ?? UserDao? ?? ??? ??. ?, ???? ???. ? ???? ???? ???? ???? add(), get() ?? ??? ?? ???? ??. ? ???? ??? UserDao? ???? ???? ??? ? ?? ?? ?? ?? ??? ??? ???.
  • 12. Interface ?? ? ?????? ????. ? UserDao? ?????? ??? ???? ???? . ? ?? ??? ?????? ???? ????.
  • 13. ????? ?? public interface ConnectionMaker { public Connection makeConnection() throws ClassNotFoundException, SQLException; } ?????? ???? public class UserDao { private IConnectionMaker simpleConnectionMaker; public UserDao() { simpleConnectionMaker = new DConnectionMaker(); } } ?????? ??? ?? ???? ????.
  • 14. ?? ? ????? UserDao? ???? ????? ??? ? ??? ?? ??? ??. - ????? ????. ? UserDao? ConnectionMaker ??? ????? ? ??. ? ????? ?????? ???? ????. IConnectionMaker connectionMaker = new DConnectionMaker(); UserDao dao = new UserDao(connectionMaker);
  • 15. ??? ??(1) OCP ? ?? ?? ??(Open-Closed Principle) ? ???? ??? ???? ?? ??? ??, ??? ? ?? ??? ??. ? ????? Dao? DB ?? ????? ??? ?? ??? ???? ??? ? ??. Dao? ?? ??? ??? ??? ??? ??? ?? ?? ?? ??.
  • 16. ?? ???, ?? ?? ? ? ?? ??? : ??? ??? ?, ?? ???? ?? ? ???? ??? ??. ?? ??? ??? ?? ??? ? ???????, ? ??? ??? ?? ???? ??. ???? ? ?? ???? ?? ? ?? ?? ??? ????. ? ?? ??? : ?? ??? ????? ?? ?? ? ??.
  • 17. ??? ? UserDaoTest? ?????? ??? ?? ??? ( ?????? ????? ??) ? ?? Test? ???? ?? ????? ??, ??? ? ?????? ? ???? ???.
  • 18. ??? ? ??? ?? ??? ???? ???? ????? ???? ???? ??? ? ? ???? factory?? ??. public class DaoFactory { public UserDao userDao() { IConnectionMaker connectionMaker = new DConnectionMaker(); UserDao dao = new UserDao(connectionMaker); return dao; } }
  • 19. ??? ?? ? DaoFactory? ?????? ????? ????? @Configuration // ? ???? ??? ?? ?? public class DaoFactory { @Bean // ???? ??? ???? IoC ??? public UserDao userDao() { return new UserDao(connectionMaker()); } @Bean public IConnectionMaker connectionMaker() { return new DConnectionMaker(); } } ApplicationContext context = new AnnotationConfigApplicationContext(DaoFactory.class); UserDao dao = context.getBean("userDao", UserDao.class); ? ?? ??? ???
  • 20. ?? ? ?????? ??? ???? ??? ? ? ? ?? IoC ??? ?? ¡­? ? ?? ???? ??? ?? ??
  • 21. ?? ? ??? public void isEqualTest() { DaoFactory factory = new DaoFactory(); UserDao dao1 = factory.userDao(); UserDao dao2 = factory.userDao(); System.out.println(dao1); System.out.println(dao2); } public static void main(String[] args) { IsEqualTest test = new IsEqualTest(); test.isEqualTest(); } dao.UserDao@115d533d dao.UserDao@603d2b3 ??? ? ??? ?? ??? ????
  • 22. Spring Context public void isEqualSpringTest() { ApplicationContext context = new AnnotationConfigApplicationContext(DaoFactory.class); UserDao dao1 = context.getBean("userDao", UserDao.class); UserDao dao2 = context.getBean("userDao", UserDao.class); System.out.println(dao1); System.out.println(dao2); } dao.UserDao@101837c4 dao.UserDao@101837c4 ? ?? ???? ?? ???? ???. ?? ???.
  • 23. ??? ? ?? ????? ???? ???? ?? ? ???? ??? ??? ?????? ??? ??? ??? ? ??? ??? ??? ??? ?? ? ??? ? ?? ??? ?? ? private ?????? ?? ?? ? ???? ??? ? ?? ??? ??? ? ??
  • 24. ??? ????? ? ??? ????? ??? ???????? ? ? ??? ?? ???? ????? ??? ? ?? ? ? ? ???? ??, ??? ??? ?? ?? ??? ? ??
  • 25. ??? ????? - ? ?? ? stateless ?? ????? ??. ? ????? ????? ?? ??, ?? ?? ?? ?? ? ?? ?? ?? ???? ???. ? ??? static final?? final? ???? ?? ?? ???.
  • 26. DI ? ???? ? ??? ?? ??? ???? ???? ?? ? ?????? ???? ??, ?? ????? ?? ?? ????.
  • 27. ?? ? ?? ??? ????? ? ? ??? ???? ?? ? ?? ??? DI ???? ??. ? ???? ??? ????.
  • 28. DI ?? ? ??? ??? ? ??? ???(setter) ? ?? ??? ? ???? ?? ??? ???? ???? ?? ?? ?(XML?? ???? ???? ??)
  • 29. xml? ?? ? @Configuration ? ?? ??? ??? xml? ?? ?? ? ???? ??? ??? 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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="IconnectionMaker" class="tobiSpring.src.connection.DConnectionMaker" /> <bean id="userDao" class="tobiSpring.src.dao.UserDao"> <property name="connectionMaker" ref="connectionMaker" /> </bean> </beans>
  • 30. ?? ? <beans> == @Configuration ? <bean id=¡°methodName¡±> == @Bean methodName() ? class=¡° ¡­BeanClass¡±> == return new BeanClass(); ? userDao.setConnectionMaker(connectionMaker()); ? == <property name=¡°connectionMaker¡± ref=¡°connectionMaker¡± />