标签:解耦 理解 切面 lock 间接 默认 动态 自动装配 三种方式
java语言是提倡高内聚低耦合的语言,spring的出现是为了解耦,在传统的javaSE程序设计中,我们直接在对象内部通过new进行创建对象或者GetInstance(单例)等直接或者间接的调用构造方法创建一个对象,在Spring开发的模式中,spring容器使用工厂模式为我们创建对象,我们使用时不需要自己去创建,直接调用spring为我们提供的对象即可,这就是控制反转的思想,实例化一个java对象有三种方式1. 使用构造器,2. 使用静态工厂,3. 使用实例工厂,对象依赖的类不在由程序员实例化,而是通过spring容器帮我们创建实例并将实例注入到需要该对象的对象中,注入的方式有三种:1. 接口注入,2. setter方法注入,3. 构造注入;注入时常用的AutoWire使用的自动装配方式为ByName,通过Bean的名字来装配Bean,还有其他四种不常用的装配方式,为:no:默认不装配,ByType根据类型自动装配,Constructor类似于ByType,但是要提供构造器参数,没有则会抛出异常,autodetect是首先尝试使用constructor方式装配,如果不行则采用bytype方式
spring还有一个核心思想就是面向切面编程,它将哪些与业务无关,却与业务模块无关的逻辑或者责任封装起来,比如事务处理,日志管理,权限控制等,便于减少系统重复的代码,减低代码间的耦合度,并有利于未来的可拓展性,springaop是基于动态代理实现的,代理的方式有两种,一种是jdk代理,一种是Cglib代理,默认为jdk代理
标签:解耦 理解 切面 lock 间接 默认 动态 自动装配 三种方式
原文地址:https://www.cnblogs.com/Web-spring/p/12195751.html