1、Spring框架
- 是一个轻量级的企业级应用框架
- 企业应用开发的"一站式"选择,贯穿于表现层、业务层、持久层
- 优点
- 低侵入式设计
- 独立于各种应用服务器
- 依赖注入特性将组件关系透明化,降低耦合度
- 面向切面编程特性允许将通用任务进行集中式处理
- 与第三方框架的良好整合
2、Spring框架
- Spring体系结构
- Spring框架
- Spring设计理念
- 是面向Bean的编程
- Spring两大核心技术
- 控制反转(IoC:Inversion of Control)/依赖注入(DI:Dependency Injection)
- 面向切面编程(AOP:Aspect Oriented Programming)
3、控制反转/依赖注入
public class UserServiceImpl implements UserService {
// 通过工厂获取所依赖的 UserDao 对象
private UserDao dao = UserDaoFactory.getInstance();
…
}
- 控制反转(IoC)
- 创建对象的控制权转移,是一种程序设计思想
- 依赖注入(DI)
- 将依赖的对象注入到需要的类中去,是"控制反转"设计思想的具体实现方式
4、面向切面编程(AOP)
public class UserServiceImpl implements UserService {
private static final Logger log = Logger.getLogger(UserServiceImpl.class);
public boolean save(User user){
log.info(" 添加用户" + user.getUsername());//记录日志
SqlSession sqlSession = null;
boolean flag = false;
try{ //异常处理
//业务代码
sqlSession = MyBatisUtil.createSqlSession();
if(sqlSession.getMapper(userMapper.class).add(user) > 0)
flag = true;
sqlSession.commit();//事务控制
log.info(" 成功添加用户" + user.getUsername());
} catch (Exception e){
log.error(" 添加用户" + user.getUsername() + " 失败", e); //记录日志
sqlSession.rollback(); //事务控制
flag = false;
} finally {
MyBatisUtil.closeSqlSession(sqlSession);
}
return flag;
}
}
- AOP目标
- 让我们专注于业务功能处理
- AOP原理
- 将复杂的需求分解出不同方面,将不同对象、不同模块之间的共同业务集中解决
- 通过动态代理的方式,把抽离出来的共性代码"织入"到业务代码中,实现对原有代码的增强处理
- AOP相关术语
- Aspect(切面)
- Advice(增强处理)
- Pointcut(切入点)
- Join Point(连接点)
- Target Object(目标对象)
- AOP proxy(AOP 代理)
- Weaving(织入)
总结