对Spring的理解

1、Spring实现了工厂模式的工厂类,这个类名为BeanFactory实际上是一个接口,在程序中通常BeanFactory的子类ApplicationContext。Spring相当于一个大的工厂类,在其配置文件中通过<bean>元素配置用于创建实例对象的类名和实例对象的属性。

2、Spring提供了对IOC良好的支持,IOC是一种编程思想,是一种架构艺术,利用这种思想可以很好地实现模块之间的解耦。IOC也称为DI(Depency Injection),什么时候注入呢?

譬如:

class Programmer{

  Computer computer=null;

  public void code(){

    //Computer computer=new IBMComputer();

    //Computer computer=beanfactory.getComputer();

    computer.writer();

  }

  public void setComputer(Computer computer){

    this.computer=computer;

  }

}

另外两种方式都由依赖,第一个直接依赖于目标类,第二个把依赖转移到工厂上,第三个彻底与目标和工厂解耦了。在Spring的配置文件中配置片段如下:

<bean id="computer" class="cn.itcast.interview.Computer">

</bean>

<bean id="programmer" class="cn.itcast.interview.Programmer">

  <property name="computer" ref="computer"></property>

</bean>

3、Spring提供了对AOP技术的良好封装,AOP称为面向切面编程,就是系统中有很多各不相干的类的方法,在这些众多方法中要加入某种系统功能的代码,例如:加入日志,加入权限判断,加入异常处理,这种应用称为AOP。实现AOP功能采用的是代理技术,客户端程序不在调用目标,而调用代理类,代理类与目标类对外具有相同的方法声明,有两种方式可以实现相同的方法声明,一是实现相同的接口,而是作为目标的子类在JDK中采用Proxy类产生动态代理的方式为某个接口生成实现类,如果要为某个类生成子类,则可以用CGLIB。在生成的代理类的方法中加入系统功能和调用目标类的相应方法,系统功能的代理以Advice对象进行提供,显然要创建 出代理对象,至少需要目标类Advice类,Spring提供了这种支持,只需要在Spring配置文件中配置这两个元素即可以实现代理和aop功能,例如,

<bean id="proxy" type="org,spring.framework.aop.ProxyBeanFactory">

  <property name="target" ref=""></property>

  <property name="advisor" ref=""></property>

</bean>

转载于:https://www.cnblogs.com/FDROSE1001/p/3662308.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/377139.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中的null是什么?

As we know null is an important concept in every language not only in Java but here we will study various factors regarding null. 我们知道null在每种语言中都是重要的概念&#xff0c;不仅在Java中&#xff0c;在这里我们还将研究有关null的各种因素。 null is a ver…

《MySQL——分区表小记》

分区表的组织形式 以年份为分割方式&#xff0c;对表进行分割&#xff1a; CREATE TABLE t (ftime datetime NOT NULL,c int(11) DEFAULT NULL,KEY (ftime) ) ENGINEInnoDB DEFAULT CHARSETlatin1 PARTITION BY RANGE (YEAR(ftime)) (PARTITION p_2017 VALUES LESS THAN (201…

实战Windows下安装boost

Boost大部分组件无需编译可直接包含头文件使用&#xff0c;但还有一些库需要编译成静态库或动态库才能使用。可使用下文将提到的bjam工具&#xff1a;bjam --show-libraries 查看必须编译才能使用的库。 编译安装环境&#xff1a;Win7&#xff0c;VS2008(msvc-9.0) 1. 下载boos…

postgresq dur_DUR的完整形式是什么?

postgresq dur杜尔(DUR)&#xff1a;您还记得吗&#xff1f; (DUR?: Do You Remember?) DUR? is an abbreviation of "Do You Remember?". DUR&#xff1f; 是“您还记得吗&#xff1f;”的缩写。 。 It is an expression, which is commonly used in messaging…

gsettings-desktop-schemas : 破坏: mutter (< 3.31.4) 但是 3.28.4-0ubuntu18.04.2 正要被安装解决方案

完整报错&#xff1a; dyydyy-Lenovo-ThinkBook-14-IIL:~$ sudo apt install build-essential 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 有一些软件包无法被安装。如果您用的是 unstable 发行版&#xff0c;这也许是 因…

程序内存检测

本文参考自&#xff1a;http://www.cnblogs.com/hebeiDGL/p/3410188.html static System.Windows.Threading.DispatcherTimer dispacherTimer;static string total "DeviceTotalMemory";static string current "ApplicationCurrentMemoryUsage";static s…

动态规划天天练1

本来很久以前就打算每天练一道动态规划题的&#xff0c;但每每由于作业太多而中断&#xff0c;现在终于停课了......废话不多说&#xff0c;第一道题就给了我迎头一棒&#xff0c;不仅想了很久&#xff0c;连题解都看了很久。。。水平相当不足啊啊&#xff0c;不多说废话&#…

AAS的完整形式是什么?

AAS&#xff1a;活着和微笑 (AAS: Alive And Smiling) AAS is an abbreviation of "Alive And Smiling". AAS是“活着和微笑”的缩写 。 It is an expression, which is commonly used in messaging or chatting on social media networking sites like Facebook, Y…

《MySQL 8.0.22执行器源码分析(1)——execute iterator一些记录》

目录一条语句的函数调用栈顺序8.0使用迭代器模式改进executorint *handler*::ha_rnd_next(*uchar* **buf*)int *TableScanIterator*::Read()int FilterIterator :: Read&#xff08;&#xff09;int HashJoinIterator::Read()int NestedLoopIterator :: Read&#xff08;&#…

关于autoupgader的狗屎问题

由于win7和xp的权限问题&#xff0c;导致这个自动升级玩意不正常。这个狗屎问题很简单&#xff0c;把exe文件的兼容性设定该一下。真是气死洒家了。转载于:https://www.cnblogs.com/usegear/p/3679097.html

strcspn函数

函数原型&#xff1a;extern int strcspn(char *str1,char *str2) 参数说明&#xff1a;str1为参照字符串&#xff0c;即str2中每个字符分别与str1中的每个字符比较。 所在库名&#xff1a;#include <string.h> 函数功能&#xff1a;以str1为参照&#xff0c…

c语言 sqlite_SQLite与C语言

c语言 sqliteSQLite数据库简介 (Introduction to SQLite database) SQLite is a relational database; it is used for embedded devices. Now a day it is using worldwide for different embedded devices. SQLite是一个关系数据库。 它用于嵌入式设备。 如今&#xff0c;它已…

《MySQL 8.0.22执行器源码分析(2)解读函数 ExecuteIteratorQuery》

函数代码 bool SELECT_LEX_UNIT::ExecuteIteratorQuery(THD *thd) {THD_STAGE_INFO(thd, stage_executing);DEBUG_SYNC(thd, "before_join_exec");Opt_trace_context *const trace &thd->opt_trace;Opt_trace_object trace_wrapper(trace);Opt_trace_object…

C语言,如何产生随机数

1. 基本函数 在C语言中取随机数所需要的函数是: int rand(void);void srand (unsigned int n); rand()函数和srand()函数被声明在头文件stdlib.h中,所以要使用这两个函数必须包含该头文件: #include <stdlib.h> 2. 使用方法 rand()函数返回0到RAND_MAX之间的伪随机数(pse…

MongoDB源码概述——内存管理和存储引擎

数据存储&#xff1a; 之前在介绍Journal的时候有说到为什么MongoDB会先把数据放入内存&#xff0c;而不是直接持久化到数据库存储文件&#xff0c;这与MongoDB对数据库记录文件的存储管理操作有关。MongoDB采用操作系统底层提供的内存文件映射&#xff08;MMap&#xff09;的方…

OBTW的完整形式是什么?

OBTW&#xff1a;哦&#xff0c;顺便说一下 (OBTW: Oh, By The Way) OBTW is an abbreviation of "Oh, By The Way". OBTW是“哦&#xff0c;顺便说一下”的缩写 。 It is an expression, which is commonly used in messaging or chatting on social media network…

SharePoint 2010 Form Authentication (SQL) based on existing database

博客地址 http://blog.csdn.net/foxdaveSharePoint 2010 表单认证&#xff0c;基于现有数据库的用户信息表本文主要描述本人配置过程中涉及到的步骤&#xff0c;仅作为参考&#xff0c;不要仅限于此步骤。另外本文通俗易懂&#xff0c;适合大众口味儿。I. 开启并配置基于声明的…

《MySQL 8.0.22执行器源码分析(3.1)关于RowIterator》

目录RowIteratorInit()Read()SetNullRowFlag()UnlockRow()StartPSIBatchMode()EndPSIBatchModeIfStarted()real_iterator()RowIterator 使用选定的访问方法读取单个表的上下文&#xff1a;索引读取&#xff0c;扫描等&#xff0c;缓存的使用等。 它主要是用作接口&#xff0c;但…

hdu 2432法里数列

这题本来完全没思路的&#xff0c;后来想一想&#xff0c;要不打个表找找规律吧。于是打了个表&#xff0c;真找到规律了。。。 打表的代码如下&#xff1a; int n; void dfs(int x1, int y1, int x2, int y2) {if (y1 y2 < n) {dfs(x1, y1, x1 x2, y1 y2);printf("…

python学习笔记四——数据类型

1.数字类型&#xff1a; 2.字符串类型&#xff1a; 切片&#xff1a;a[m:n:s] m:起始值 n:结束值&#xff08;不包括n&#xff09; s:步长&#xff0c;负数表示从后向前取值 3.序列&#xff1a;列表&#xff0c;元组和字符串都是序列 序列的两个主要特点是索引操作符和切片…