1.全面阐释Spring及其各项功能
Spring--开源的控制反转(Inversion of Control,IoC)和面向切面(AOP)的容器框架.
一.IOC 控制反转
public class PersonServiceBean {private PersonDao personDao = new PersonDaoBean();public void save(Person person){personDao.save(person);} }public class PersonServiceBean{private PersonDao personDao;//通过构造器参数,让容器把创建好的依赖对象注入进PersonServiceBean,当然也可以通过setter 的方法进行注入public PersonServiceBean(PersonDao person){this.personDao = person;}public void save(Person person){personDao.save(person);}}public void payment(){ Connection conn = null; conn.setAutoCommit(false); Bean1.update(conn); //更新金额 Bean2.save(conn); //记录操作日志}public class Bean1{ public void update(Connection conn) { Statement.executeUpdate(update account set amount = ? where id=?); }}public class Bean2{ public void save(Connection conn) { Statement.executeUpdate("insert into Log (content) values (?)"); }}public void payment(){ Bean1.update(); //更新金额 Bean2.save(); //记录操作日志}public class Bean1{ public void update() { Connection conn = null; conn.setAutoCommit(false); Statement.executeUpdate(update account set amount = ? where id=?); }}public class Bean2{ public void save() { Connection conn = null; conn.setAutoCommit(false); Statement.executeUpdate("insert into Log (content) values (?)"); }}@Transactional(propagation=propagation.Required)public void payment(){ Bean1.update(); //更新金额 Bean2.save(); //记录日志}public class Bean1{ @Transational(propagation = Propagation.Required) public void update() { executeUpdate("update account set amount=? where id=?"); }}public class Bean2{ @Transational(propagation = Propagation.Required) public void save() { executeUpdate("insert into Log(content) values(?)"); }}@Transactional(propagation=propagation.Required)public void payment(){ Bean1.update(); //更新金额 Bean2.save(); //记录日志}public class Bean1{ @Transational(propagation = Propagation.Required) public void update() { executeUpdate("update account set amount=? where id=?"); }}public class Bean2{ @Transational(propagation = Propagation.RequiresNew) public void save() { executeUpdate("insert into Log(content) values(?)"); }}