spring框架
起因:软件系统的业务逻辑超来越复杂.
一. Spring概念
- spring是轻量级开源框架,在这之前有EJB(重量级的) spring是一个容器框架,主要实现了ioc和aop思想.
- spring 的核心部分:
(1) aop:面向切面编程,扩展功能不是修改源代码实现.
(2) ioc:控制反转,促进了低耦合,管理对象,把对象的创建不是通过new 的方式实现,而是交给spring配置
来创建对象.
- spring 是一站式框架.
(1) spring 在javaEE三层(mvc)结构中,每一层都提供不同的解决技术.
web层:springmvc.
service层:spring的ioc.
dao层:spring 的jdbcTemplate.
二. Spring作用
降低耦合度
程序之间的依赖关系
类与类之间的依赖
方法和方法之间的依赖
解耦:降低程序间的依赖关系
实际开发中:编译期不依赖,运行时依赖
解耦的思路:
使用反射创建对象,而不是直接new
通过配置文件的方式获取要创建对象的全限定类名
使用工厂模式获取对象
程序之间的依赖关系不能完全消除,只能降低它们之间的依赖关系。
三. Spring注解
1. 管理bean对象
@Repository
@Service
@Controller
@Component
2. 管理bean对象的依赖关系
@Autowried
@Resource
3. @Autowried和@Resource的区别
- Resource是jdk中的一个注解而不是spring框架的,相反@Autowried是spring框架的注解
- Autowried和Resource都可以根据类型和名称进行注入
- @Resource注解更灵活,可以通过name和type属性指定bean名称和类型
- @Autowired通过required 可以设置为false,指定为非必注入属性
AOP思想
是一种全新的编程思想,是对OOP(面向对象编程思想)的补充
- 面向过程
- 面向对象
- 面向切面编程思想(AOP)
- 面向函数
- 面向组件
应用场景
权限验证(拦截器)
单元测试
事务管理
操作日志打印功能(某用户在什么时候执行了什么操作)
面向切面思路
在程序运行过程中,根据aop配置,把非核心业务逻辑代码,动态的切入方法的开始
结束或方法执行的全过程的编程思想就称为面向切面编程思想。
配置使用
1.注解的方式配置
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
2.XML方式来配置
<!--配置aop 切面-->
<aop:config>
<!--配置切入点 id:给切入点命名,配置切面时要使用到-->
<aop:pointcut id="pointOne" expression="execution(* com.sc.aop.UserDao.*(..))"></aop:pointcut>
<!--<aop:pointcut id="pointOne" expression="execution(public void com.sc.aop.UserDao.*(String))"></aop:pointcut>-->
<!--配置切面-->
<aop:aspect ref="writeLog">
<aop:before method="wr" pointcut-ref="pointOne"></aop:before>
</aop:aspect>
</aop:config>
五个通知
@Before 前置通知
@After 后置通知
@AfterReturning 返回通知
@AfterThrowing 异步通知
@Around 环绕通知