<Ϲ> | ǻ
ܼ 3.0 3.1 ϸ ٽ α IoC/DI, PSA, AOP ̿ پ , α ֵ ش. ̾ Vol. 2 á Ұϴ 3.0 3.1 ϰ ȿ ϴ ʿ ش.
3.1 ó ϰų ư ں Ȱ Űó ϰ ӿũ Ϸ ϴ ŰƮ ̸ ִ Ϻ ̴̺.
ѹα ǥ ӿũ ϴ No. 1 Ʈ!
ȣ IT ǥ Ʈ. ¼ҽ Ŀ´Ƽ ½õ ǥ ѱڸ(KSUG) ̱ ϴ. 8Ʈ ǻ α ŷ¿ 10 Ⱓ ̷ α ܿ 17° Ʈ ߰ , ؿ ִ. 2004 ̿ؼ б, ͳ ü ý ؿ ø̼ ӿũ ð ؿ ִ. JCO ۷ ǥ߰ , , KSUG ̳ ϱ ߴ. ¼ҽ õ ϴ α(toby.epril.com) ϰ ִ.
1 Ʈ
1.1 ʳ DAO
1.1.1 User
1.1.2 UserDao
1.1.3 main() ̿ DAO Ʈ ڵ
1.2 DAO и
1.2.1 ɻ и
1.2.2 Ŀؼ
UserDao ɻ
ߺ ڵ ҵ
: 丵 Ʈ
1.2.3 DB Ŀؼ
Ȯ
1.3 DAO Ȯ
1.3.1 Ŭ и
1.3.2 ̽
1.3.3 輳 å и
1.3.4 Ģ
Ģ
յ
1.4 (IoC)
1.4.1 Ʈ 丮
丮
赵μ 丮
1.4.2 Ʈ 丮 Ȱ
1.4.3
1.5 IoC
1.5.1 Ʈ 丮 ̿ IoC
ø̼ ؽƮ
DaoFactory ϴ ø̼ ؽƮ
1.5.2 ø̼ ؽƮ ۹
1.5.3 IoC
1.6 ̱ Ʈ Ʈ
1.6.1 ̱ Ʈμ ø̼ ؽƮ
ø̼ǰ ̱
̱ Ѱ
̱ Ʈ
1.6.2 ̱ Ʈ
1.6.3
1.7 (DI)
1.7.1 (IoC)
1.7.2 Ÿ
UserDao
UserDao
1.7.3 ˻
1.7.4
ȯ
ΰ ߰
1.7.5 ҵ带 ̿
1.8 XML ̿
1.8.1 XML
connectionMaker() ȯ
userDao() ȯ
XML
1.8.2 XML ̿ϴ ø̼ ؽƮ
1.8.3 DataSource ̽ ȯ
DataSource ̽
ڹ ڵ
XML
1.8.4 Ƽ
value ڵ ȯ
1.9
2 Ʈ
2.1 UserDaoTest ٽ
2.1.1 Ʈ 뼺
2.1.2 UserDaoTest Ư¡
DAO Ʈ
Ʈ
ڵ Ʈ ڵ
Ʈ
2.1.3 UserDaoTest
2.2 UserDaoTest
2.2.1 Ʈ ڵȭ
2.2.2 Ʈ ȿ
JUnit Ʈ ȯ
Ʈ ҵ ȯ
ڵ ȯ
JUnit Ʈ
2.3 ڸ ӿũ JUnit
2.3.1 JUnit Ʈ
IDE
2.3.2 Ʈ ϰ
deleteAll() getCount() ߰
deleteAll() getCount() Ʈ
ϴ Ʈ
2.3.3 Ʈ
getCount() Ʈ
addAndGet() Ʈ
get() ǿ Ʈ
Ʈ Ű ڵ
Ʈ
2.3.4 Ʈ ̲
ɼ踦 Ʈ
Ʈ ֵ
2.3.5 Ʈ ڵ
@Before
Ƚó
2.4 Ʈ
2.4.1 Ʈ ø̼ ؽƮ
Ʈ ؽƮ ӿũ
Ʈ ҵ ؽƮ
Ʈ Ŭ ؽƮ
@Autowired
2.4.2 DI Ʈ
Ʈ ڵ忡 DI
Ʈ DI
̳ DI Ʈ
DI ̿ Ʈ
2.5 н Ʈ
2.5.1 н Ʈ
2.5.2 н Ʈ
JUnit Ʈ Ʈ Ʈ
Ʈ ؽƮ Ʈ
2.5.3 Ʈ
2.6
3 ø
3.1 ٽ ʳ DAO
3.1.1 ó DAO
JDBC ó ڵ
JDBC ȸ ó
3.2 ϴ Ͱ ʴ
3.2.1 JDBC try/catch/finally ڵ
3.2.2 и
ҵ
ø ҵ
DI Ŭ̾Ʈ/ؽƮ и
3.3 JDBC ȭ
3.3.1 Ŭ ߰
3.3.2 Ŭ̾Ʈ
Ŭ
Ŭ
3.4 ؽƮ DI
3.4.1 JdbcContext и
Ŭ и
3.4.2 JdbcContext Ư DI
DI
ڵ带 ̿ϴ DI
3.5 ø ݹ
3.5.1 ø/ݹ ۿ
ø/ݹ Ư¡
JdbcContext ø/ݹ
3.5.2 ݹ Ȱ
ݹ и Ȱ
ݹ ø
3.5.3 ø/ݹ
Ʈ try/catch/finally
ߺ ſ ø/ݹ
ø/ݹ 缳
̿ ݹ ̽
3.6 JdbcTemplate
3.6.1 update()
3.6.2 queryForInt()
3.6.3 queryForObject()
3.6.4 query()
ǿ Ʈ ۼ
query() ø ̿ϴ getAll()
Ʈ
3.6.5 ݹ и
DI ڵ
ߺ
ø/ݹ ϰ UserDao
3.7
4
4.1 SQLException
4.1.1 ʳ ó
Ȧ
ǹϰ å throws
4.1.2 Ư¡
4.1.3 ó
ó ȸ
ȯ
4.1.4 ó
Ÿ ȭ
add() ҵ ó
ø̼
4.1.5 SQLException Ƴ?
4.2 ȯ
4.2.1 JDBC Ѱ
ǥ SQL
ȣȯ SQLException DB
4.2.2 DB ڵ ȯ
4.2.3 DAO ̽ DataAccessException
DAO ̽ и
ȭ DataAccessException
4.2.4 UserDao
̽
Ʈ
DataAccessException Ȱ ǻ
4.3
5 ȭ
5.1 ߰
5.1.1 ʵ ߰
Level ̴
User ʵ ߰
UserDaoTest Ʈ
UserDaoJdbc
5.1.2 ߰
Ʈ ߰
UserDao UserDaoJdbc
Ʈ
5.1.3 UserService.upgradeLevels()
UserService Ŭ
UserServiceTest Ʈ Ŭ
upgradeLevels() ҵ
upgradeLevels() Ʈ
5.1.4 UserService.add()
5.1.5 ڵ
upgradeLevels() ҵ ڵ
upgradeLevels() 丵
User Ʈ
UserServiceTest
5.2 Ʈ ȭ
5.2.1 ƴϸ
Ʈ UserService 뿪
Ʈ
Ʈ
5.2.2 Ʈ 輳
JDBC Ʈ Ʈ 輳
UserService UserDao Ʈ
Ͻ Ʈ 輳
UserService Ʈ 輳
5.2.3 Ʈ ȭ
Connection Ķ
Ʈ ȭ
Ʈ Ʈ
JdbcTemplate Ʈ ȭ
5.2.4 Ʈ ȭ
ȯ濡 ӵǴ Ʈ 輳 ڵ
Ʈ API ذå
Ʈ ȭ
Ʈ и
,
5.3 ȭ å Ģ
å Ģ
å Ģ
5.4 ȭ
5.4.1 JavaMail ̿
JavaMail
5.4.2 JavaMail Ե ڵ Ʈ
5.4.3 Ʈ ȭ
JavaMail ̿ Ʈ
ȭ
Ʈ Ʈ
Ʈ ȭ
5.4.4 Ʈ 뿪
Ʈ Ʈ
Ʈ 뿪 Ư¡
Ʈ ̿ Ʈ
5.5
6 AOP
6.1 Ʈ ڵ и
6.1.1 ҵ и
6.1.2 DI ̿ Ŭ и
DI ̿ Ʈ и
UserService ̽
и Ʈ
Ʈ DI
Ʈ и Ʈ
Ʈ 輳 ڵ и
6.2 Ʈ
6.2.1 Ʈ
6.2.2 Ʈ Ʈ Ű
Ʈ UserServiceImpl
Ʈ Ȱ
UserDao Ʈ
Ʈ
6.2.3 Ʈ Ʈ
6.2.4 ӿũ
Mockito ӿũ
6.3 ̳ Ͻÿ 丮
6.3.1 Ͻÿ Ͻ , ڷ
ڷ
Ͻ
6.3.2 ̳ Ͻ
Ͻ Ͻ ۼ
÷
Ͻ Ŭ
̳ Ͻ
̳ Ͻ Ȯ
6.3.3 ̳ Ͻø ̿ Ʈ ΰ
Ʈ InvocationHandler
TransactionHandler ̳ Ͻø ̿ϴ Ʈ
6.3.4 ̳ Ͻø 丮
丮
丮
̳ Ͻø ִ 丮
Ʈ Ͻ 丮
Ʈ Ͻ 丮 Ʈ
6.3.5 Ͻ 丮 Ѱ
Ͻ 丮
Ͻ 丮
Ͻ 丮 Ѱ
6.4 Ͻ 丮
6.4.1 ProxyFactoryBean
̽: Ÿ ʿ ΰ
Ʈ: ΰ ҵ
6.4.2 ProxyFactoryBean
TransactionAdvice
XML
Ʈ
̽ Ʈ
6.5 AOP
6.5.1 ڵ Ͻ
ߺ
ó⸦ ̿ ڵ Ͻ
Ȯ Ʈ
Ʈ Ʈ
6.5.2 DefaultAdvisorAutoProxyCreator
Ŭ Ʈ ۼ
̿ϴ ڵ Ͻ
Ʈ
̽
ProxyFactoryBean ſ
ڵ Ͻ ⸦ ϴ Ʈ
ڵ Ͻ Ȯ
6.5.3 Ʈ ǥ ̿ Ʈ
Ʈ ǥ
Ʈ ǥ
Ʈ ǥ Ʈ
Ʈ ǥ ̿ϴ Ʈ
Ÿ ϰ Ŭ ̸
6.5.4 AOP ΰ?
Ʈ ȭ
Ͻÿ ڷ
̳ Ͻÿ Ͻ 丮
ڵ Ͻ Ʈ
ΰ ȭ
AOP: ֽƮ α
6.5.5 AOP
Ͻø ̿ AOP
Ʈڵ AOP
6.5.6 AOP
6.5.7 AOP ӽ̽
AOP ӽ̽
Ʈ
6.6 Ʈ Ӽ
6.6.1 Ʈ
Ʈ
ݸ
ѽð
б
6.6.2 Ʈ ͼͿ Ʈ Ӽ
TransactionInterceptor
ҵ ̸ ̿ Ʈ Ӽ
tx ӽ̽ ̿
6.6.3 Ʈư Ʈ Ӽ
Ʈ Ʈ ǥ Ÿ ̳ ̸ ̿Ѵ
ҵ ̸ Ģ ּ Ʈ ̽ Ӽ Ѵ
Ͻ AOP Ÿ Ʈ ҵ带 ȣ ʴ´
6.6.4 Ʈ Ӽ
Ʈ 輳 Ͽȭ
Ǵ Ʈ ǥ
Ʈ Ӽ Ʈ ̽
Ʈ Ӽ Ʈ
6.7 ֳ̼ Ʈ Ӽ Ʈ
6.7.1 Ʈ ֳ̼
@Transactional
Ʈ Ӽ ̿ϴ Ʈ
ü å
Ʈ ֳ̼
6.7.2 Ʈ ֳ̼
6.8 Ʈ Ʈ
6.8.1 Ʈǰ Ʈ Ӽ
6.8.2 Ʈ ȭ Ʈ
Ʈ Ŵ Ʈ ȭ
Ʈ Ŵ ̿ Ʈ Ʈ
Ʈ ȭ
ѹ Ʈ
6.8.3 Ʈ Ʈ ֳ̼
@Transactional
@Rollback
@TransactionConfiguration
NotTransactional Propagation.NEVER
ȿ DB Ʈ
6.9
7 ٽ
7.1 SQL DAO и
7.1.1 XML ̿ и
SQL Ƽ
SQL Ƽ
7.1.2 SQL
SQL ̽
ϴ ܼ SQL
7.2 ̽ и ڱ
7.2.1 XML
JAXB
SQL Ű ۼ
7.2.2 XML ̿ϴ SQL
SQL XML
XML SQL
7.2.3 ʱȭ ۾
7.2.4 ȭ غ: ̽ и
åӿ ̽
SqlRegistry ̽
SqlReader ̽
7.2.5 ڱ ϱ
̽
̽ ̿ и
ڱ
7.2.6 Ʈ
Ȯ Ŭ
Ʈ 踦
7.3 ȭ
7.3.1 OXM ȭ
OXM ̽
JAXB Ʈ
Castor Ʈ
7.3.2 OXM ȭ
Ŭ ϴ Ŭ
̿ BaseSqlService
7.3.3 ҽ ȭ
ҽ
ҽ δ
Resource ̿ XML
7.4 ̽ Ȯ
7.4.1 DI Ȯ
DI ǽϴ
DI ̽ α
7.4.2 ̽
7.5 DI ̿ پ ϱ
7.5.1 ConcurrentHashMap ̿ SQL Ʈ
SQL Ʈ Ʈ
SQL Ʈ
7.5.2 ͺ̽ ̿ SQL Ʈ
DB
DB н Ʈ
DB ̿ SqlRegistry
UpdatableSqlRegistry Ʈ ڵ
XML DB
7.5.3 Ʈ
SQL Ʈ Ʈ
ڵ带 ̿ Ʈ
7.6 3.1 DI
ڹ ȭ
7.6.1 ڹ ڵ带 ̿
Ʈ ؽƮ
context:annotation-config /
bean ȯ
± ȯ
7.6.2 ijװ ڵ̾
@Autowired ̿ ڵ̾
@Component ̿ ڵ
7.6.3 ؽƮ и @Import
Ʈ ؽƮ и
@Import
7.6.4
@Profile @ActiveProfiles
̳ Ȯ
ø Ŭ ̿
7.6.5 Ƽ ҽ
@PropertySource
PropertySourcesPlaceholderConfigurer
7.6.6 @Enable*
@Enable* ֳ̼
7.7
8 ̶ ΰ?
8.1
8.2
8.2.1
ٺ
߽Ű
8.2.2 ذϷ
ŵ ٺ
ذå: EJB
ħ ȿ ذå:
8.2.3 ϴ
ϴ
Ͻ ø̼ ϴ
ٽ : ü DI
8.3 POJO α
8.3.1 ٽ: POJO
8.3.2 POJO ΰ?
8.3.3 POJO
8.3.4 POJO
8.3.5 POJO ӿũ
8.4
8.4.1 (IoC) / (DI)
DI Ȱ
8.4.2 ֽƮ α(AOP)
AOP
AOP ܰ
8.4.3 ͺ ȭ(PSA)
8.5
9 Ʈ ϱ
9.1 ڹ ÷ ø̼
9.1.1 Ŭ̾Ʈ 鿣 ý
9.1.2 ø̼
ҽ tcServer
9.1.3 ø̼
9.2 ߵ ȯ
9.2.1 JavaSE JavaEE
JavaSE/JDK
JavaEE/J2EE
9.2.2 IDE
9.2.3 SpringSoruce Tool Suite
SpringIDE ÷
STS ÷
Ÿ ÷
9.2.4 ̺귯
̺귯
̺귯
̺귯
̸ 丮
9.3 ø̼ Űó
9.3.1 Űó
Űó SoC
3 Űó
Űó Ģ
9.3.2 ø̼ Űó
DB/SQL ߽
Ŵ
9.3.3 Ʈ ߽ Űó
Ϳ Ʈ
Ʈ ϴ ڵ
Ʈ
Ʈ
dz Ʈ
DTO Ʈ
9.3.4 ø̼ Űó
Űó
Űó
Ƽ ӿũ, ̺귯
9.4
η A
A.1 Ư¡
A.1.1 ̸
A.1.2 ߰
߰
Maven/Ivy ڵ ߰
A.1.3
A.2
A.2.1 ⺰
ASM
Core
Beans
AOP
Expression
Context
Context.Support
Transaction
JDBC
ORM
Web
Web.Servlet
Web.Portlet
Web.Struts
JMS
Aspects
Instrument
Instrument.Tomcat
Test
η B ̺귯
B.1 ̺귯 Ư¡
B.1.1 ̺귯 ̸
B.1.2 ̺귯 ߰
߰
ڵ ߰
B.2 ⺰ ̺귯
B.2.1 ʼ ̺귯
B.2.2 ⺰ ̺귯
ASM
Core
Beans
AOP
Expression
Context
Context.Support
Transaction
JDBC
ORM
Web
Web.Servlet
Web.Portlet
Web.Struts
JMS
Aspects
Instrument
Instrument.Tomcat