使用Spring的好处
1 低耦合
2 声明式事务管理
Spring做了什么
1 通过配置帮忙管理相互依赖
2面向且米娜编程打通程序横向无耦合交换功能(传统的都是继承有相互依赖) 如日记统计 性能统计 安全控制
3 简单帮助管理数据库事务
4方便对接引入第三方框架 提供整合方法
5 提供SpringMVVC的web框架
6 有一系列的完整服务脚手架 mail 任务调度
- Data Access/Integration层包含有JDBC、ORM、OXM、JMS和Transaction模块。
- Web层包含了Web、Web-Servlet、WebSocket、Web-Porlet模块。
- AOP模块提供了一个符合AOP联盟标准的面向切面编程的实现。
- Core Container(核心容器):包含有Beans、Core、Context和SpEL模块。
- Test模块支持使用JUnit和TestNG对Spring组件进行测试。
IOC(Inverse Of Control)控制反转
这个是一种思想,就是说由大家开发中控制类的创建过程交给Spring来管理
当需要时直接从Spring中去取而非自己创建
DI (Dependency Injection)依赖注入
Spring将依赖对象通过配置方式将我们需要的相互依赖关系进行绑定,
而非是大家手动的创建然后手动去管理类之间的依赖
简单说就是通过配置的方式将相互之间的依赖关系管理起来
依赖注入能够成立主要是控制反转的思想存在(Spring内部管理了所有的类
,因此配置文件其实也是配置的赋值)
总结:IoC 和 DI 其实是同一个概念的不同角度描述,DI 相对 IoC 而言,明确描述了“被注入对象依赖 IoC 容器配置依赖对象”
Spring AOP 简介
AOP 即 Aspect Oriented Program 面向切面编程
在开发过程中由主要核心业务和周边功能,也就是纵向和横向之分
而周边的横向串联既是切面的,将原始的核心纵向业务与横向的周边串联成网即为AOP
AOP目的
AOP概念点
pointcut 在哪些类,哪些方法上切入
advice(通知) 在方法执行的什么 增强的什么功能
aspect(切面) 切入点 通知 也就是说在哪里做了什么事情
weaving(织入) 将切面加入到对象,并创建代理的过程
pointcut 切入点
代码语言:javascript复制public class ProductService {
public void doSOmeThing() {
System.out.println("do some …");
}
}
Aspect切面
代码语言:javascript复制public class LogAspect {
//做增强功能的地方
public Object log(ProceedingJoinPoint joinPoint) throws Throwable {
System.out.println("start log:" joinPoint.getSignature().getName());
Object object = joinPoint.proceed();
System.out.println("end log:" joinPoint.getSignature().getName());
return object;
}
}
代码语言:javascript复制<bean class="com.aop.ProductService" name="productService"/>
<bean class="com.aop.LogAspect" name="logAspect"/>
<aop:config>
<!-- 从哪里切入 在哪里做增强-->
<aop:pointcut id="loggerCutpoint"
expression="execution(* com.aop.ProductService.*(..))"/>
<!-- 做什么增强 将切入点 引入到切面中 -->
<aop:aspect id="logAspect" ref="logAspect">
<!--在什么时机(方法前后)做-->
<aop:around pointcut-ref="loggerCutpoint" method="log"/>
</aop:aspect>
</aop:config>
代码语言:javascript复制public class aop {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new org.springframework.context.support.ClassPathXmlApplicationContext("applicationContext.xml");
ProductService productService = (ProductService) context.getBean("productService");
productService.doSOmeThing();
}
}
注意Idea中需要把xml放置与resources目录下