Spring AOP/DI/IOC 简述及使用
1. Spring介绍
Spring是轻量级的J2EE应用程序框架。Spring的核心是个轻量级容器(container),实现了IoC(Inversion of Control)模式的容器,Spring的目标是实现一个全方位的整合框架,在Spring框架下实现多个子框架的组合,这些子框架之间彼此可以独立,也可以使用其它的框架方案加以替代,Spring希望提供一站式的框架整合方案 。
Spring不会特別去提出一些子框架来与现有的OpenSource框架竞争,除非它觉得所提出的框架够新够好,例如Spring有自己的 MVC框架方案,因为它觉得现有的MVC方案有很多可以改进的地方,但它不强迫您使用它提供的方案,您可以选用您所希望的框架来取代其子框架,例如您仍可以在Spring中整合您的Struts框架 。
Spring共有7个模块,分别为:核心容器、Spring 上下文、Spring AOP、Spring DAO、Spring ORM、Spring Web 模块、Spring MVC 框架,Spring是全面的和模块化的。Spring有分层的体系结构,这意味着你能选择使用它孤立的任何部分,它的架构仍然是内在稳定的。因此从你的学习中,你可得到最大的价值。例如,你可能选择仅仅使用Spring来简单化JDBC的使用,或用来管理所有的业务对象。 它的设计从底部帮助你编写易于测试的代码。Spring是用于测试驱动工程的理想的framework。
spring 的优点:
1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦
2.可以使用容易提供的众多服务,如事务管理,消息服务等
3.容器提供单例模式支持
4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能
5.容器提供了众多的辅助类,能加快应用的开发
6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等
7.spring属于低侵入式设计,代码的污染极低
8.独立于各种应用服务器
9.spring的DI机制降低了业务对象替换的复杂性
10.Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可以自由选择spring的部分或全部
2.ioc
3. AOP介绍
4. 环境配置
spring的官网上不容易找到spring的zip包,从这里可以下载到:http://repo.spring.io/release/org/springframework/spring/ 。另外,spring需要一些依赖包,但这些依赖包没有打包在spring的zip中,需要自己下载。包括使用IoC功能时所需要的commons-logging.jar,使用AOP功能时所需要的aopalliance.jar,aspectj-1.7.4.jar,aspectjrt.jar,aspectjweaver.jar。这些自己在网上找一下,加到用户库里就可以了。
新建一个web工程。file->new->web project,给工程取名为Spring_Test。将下载到的spring包中的.jar文件复制到Spring_Test/WebRoot/WEB-INF/lib下。功能每个jar包都有一个doc.jar和src.jar,这两种包可以等需要的看doc和源代码的时候再加入。
5.实例:
1 需要的jar包和文件结构
jar包下载地址:http://pan.baidu.com/s/1sjDbzrR
2 bean.xml配置文件,放在src目录下
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns="http://www.springframework.org/schema/beans" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans 5 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 6 <bean id="person" class="com.test.bean.Person"> 7 <property name="name" value="xingoo"/> 8 <property name="age" value="12"/> 9 </bean> 10 </beans>
3 Person类,这里使用的是set设置注入方式
package com.test.bean;public class Person {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public void info(){System.out.println("一起来吃麻辣烫!");System.out.println("name:"+getName()+" age:"+getAge());} }
4 test类
package testSpring;import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;import com.test.bean.Person;public class test {public static void main(String[] args){ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");//读取bean.xml中的内容Person p = ctx.getBean("person",Person.class);//创建bean的引用对象p.info();} }
5 执行结果
Spring AOP/DI/IOC 简述及使用相关推荐
- Spring AOP与IOC
Spring AOP实现日志服务 pom.xml需要的jar <dependency><groupId>org.apache.commons</groupId>&l ...
- Spring AOP与IOC以及自定义注解
Spring AOP实现日志服务 pom.xml需要的jar <dependency><groupId>org.apache.commons</groupId>&l ...
- spring的DI/IOC机制
先就IOC和DI谈一点我的看法. IOC(DI):其实这个Spring架构核心的概念没有这么复杂,更不像有些书上描述的那样晦涩.Java程序员都知道:java程序中的每个业务逻辑至少需要两个或以上的对 ...
- spring aop原理_Spring知识点总结!已整理成142页离线文档(源码笔记+思维导图)...
写在前面 由于Spring家族的东西很多,一次性写完也不太现实.所以这一次先更新Spring[最核心]的知识点:AOP和IOC 无论是入门还是面试,理解AOP和IOC都是非常重要的.在面试的时候,我没 ...
- Spring AOP Capability and goals
5.1.AOP概念 让我们首先定义一些中心AOP概念和术语.这些术语不是特定于Spring的.不幸的是,AOP术语不是特别直观.但是,如果Spring使用自己的术语,那将更加令人困惑. 方面:跨越多个 ...
- Spring AOP capabilities and goals
Spring AOP是用纯Java实现的. 不需要特殊的编译过程. Spring AOP不需要控制类加载器层次结构,因此适合在Servlet容器或应用程序服务器中使用. Spring AOP目前仅支持 ...
- Spring AOP知识详解
本文来详细说下spring中的aop内容 文章目录 Spring AOP概述 Spring AOP一代 Pointcut Jointpoint Advice Advisor 织入 Spring AOP ...
- 3.2 Spring AOP的设计与实现
2019独角兽企业重金招聘Python工程师标准>>> JVM的动态代理特性 在Spring AOP实现中,使用的核心技术是动态代理,这实际上是JDK的一个特性(JDK1.3以上的版 ...
- Spring 5 中文解析之核心篇-Spring AOP编程
技术交流群: 面向切面的编程(AOP)通过提供另一种思考程序结构的方式来补充面向对像的编程(OOP).OOP中模块化的关键单元是类,而在AOP中模块化是切面.切面使关注点(例如事务管理)的模块化可以跨 ...
- Spring AOP(一)——基础概念
前文的一些内容更多是针对Spring容器内部的一些特性的描述,接下来一个专题将描述Spring AOP的一些信息,配置细节等等. 介绍 面向切面编程(AOP)是一种新的针对程序结构的思路,它补足了面向 ...
最新文章
- 计算机二级怎么更改报名密码忘记了怎么办,中考报名系统密码忘了怎么办
- Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.
- 1载波把32个信道按_OFDM技术:相比FDM提高频带利用率,子载波间隔可以随意选取吗?...
- DLA实现跨地域、跨实例的多AnalyticDB读写访问
- java opencv yuv_JavaCV与OpenCV的区别和使用中遇到的问题
- Win10 Build 11099和11102的更动超过1200项
- 2017 软件开发薪酬调查:Go 和 Scala 是最赚钱的语言
- 计算机专业常用图论,同等学力申硕计算机专业--数学公式集合(新增学习笔记)...
- 微软VMM2008实战之P2V迁移攻略
- Java中无法到达的语句
- 图像处理-RGB彩色图像均衡化处理
- Vue页面返回顶部功能实现
- 阿里矢量图标库的使用方法
- 电气工程及其自动化计算机配置,电气工程及其自动化
- 交换机基础原理,冲突域和广播域
- Vscode文件夹和代码各种颜色(详细汇总)
- 相机对焦和调焦距的区别是什么 ?
- 常见中文乱码问题解决方式
- oracle ora 3136,ALERT日志中常见监听错误:ORA-3136错误的排查
- 一起来看流星雨剧情简介/剧情介绍/剧情分集介绍第二集
热门文章
- javascript 的预解释机制
- STM32 使用 printf 发送数据配置方法 -- 串口 UART, JTAG SWO, JLINK RTT
- mysql端口隐藏_修改MySQL端口以及出现的问题
- mysql数据库中更新数据表用以下哪一项_删除数据表用以下哪一项()_学小易找答案...
- C语言程序设计 第八章字符串
- php base64_decode 图片,php读取和保存base64编码图片
- Ubuntu 16.04 修改为几个国内更新源
- 【论文笔记】Joint Cascade Face Detection and Alignment
- 强大高可用的数据可视化神器plotly_express实践记录
- 纪念一下我这尴尬中二的排名吧