认识Spring框架

2019-09-05 17:12:14 浏览数 (1)

使用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目录下

0 人点赞