前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >认识Spring框架

认识Spring框架

作者头像
大话swift
发布2019-09-05 17:12:14
4100
发布2019-09-05 17:12:14
举报
文章被收录于专栏:大话swift大话swift

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大话swift 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档