Spring

 


Spring:(java轻量级框架)

1:Spring的优点/缺点:

优点

缺点

低耦合

配置文件过多

面向切面编程

过于庞大,结构太复杂,性能上面会有一定损耗

可以与第三方框架进行整合应用

 

支持声明式事务处理

 

2:Bean对象的作用域:

通过Scope属性定义或者@Scope注解

默认为(单例),可以更改为(原型)

3:Spring中的重点(IOC&&AOP)

IOC:控制反转:

对象的创建不再由程序员创建,而是全部交给容器去进行创建,并且由spring框架来协调对象间的依赖关系,这也是spring的核心,在底层它是通过反射来实现的。(可以通过反射获取类属性和方法,并且对其进行操作)

DI:依赖注入,控制反转的实现方式

原理:不再由自身控制代码,而是由框架进行代码的控制,从而产生控制权的反转。 

基于构造方法的注入

基于set方法的注入

基于注解的注入(@Autowrite)

AOP:面向切面编程

以前的代码是按照逻辑来运行,而面向切面就相当于在一条河流中开辟支流,加入自己的逻辑,但是不影响自身的运行。

4:Spring的Bean有哪些作用域:

Singleton:(单例,默认)SpringIOC容器只会创建该Bean的唯一实例

Prototype:每次请求都创建一个实例

Request:每次请求都会创建一个新的Bean

Session:每次会话都会创建一个实例

gloal-Session:全局作用域

注意:Singleton不是线程安全,一个容器中只有一个实例,那么多个请求访问通一个实例,那么就会出现多个线程并发访问同一个对象。这样是不安全的。

解决办法:(可以使用ThreadLocal进行处理)

原理:ThreadLocal的实例代表了一个线程局部的变量,每条线程都只能看到自己的值,并不会意识到其它的线程中也存在该变量。

它采用采用空间来换取时间的方式,解决多线程中相同变量的访问冲突问题。

5:Spring配置的三种方式:

1:基于XML的配置:

原理:Spring的IOC容器启动时就需要传入一个配置文件,才能以此为基础创建一个容器,并且实例化、配置配置文件中配置好的Bean。

Spring 配置文件用于指导Spring 工厂生产Bean,并进行依赖关系的注入。

一般在applicationContext.xml配置文件,可以修改。

2:基于注解的配置:

开启注解扫描后,就可以用注解的方式在Spring中向属性、方法和构造方法中自动装配变量。

@Required

该注解应用于设置方法。

@Autowired

该注解应用于有值设值方法、非设值方法、构造方法和变量。

@Qualifier

该注解和@Autowired注解搭配使用,多个bean时可以选择执行顺序。

3:基于java的配置

由@Configuration注解和@Bean注解来实现的。

由@Bean注解的方法将会实例化、配置和初始化一个新对象,这个对象将由Spring的IoC容器来管理。

被@Configuration所注解的类则表示这个类的主要目的是作为资源文件。

7:Spring的事务管理:

防止出现脏数据,防止数据库数据出现问题

TransactionMananger:事务管理器

8:Spring框架中Bean的生命周期:

Spring容器从XML文件中读取Bean的定义,并实例化Bean。

Spring根据Bean的定义填充所有的属性。

如果Bean实现了BeanNameAware接口,Spring传递Bean到ID到setBaenName方法。

如果Bean实现了BeanFactoryAware接口,Spring传递BeanFactory给SetBeanFactory方法。

如果Bean实现了IntializingBean接口,调用它的AfterPropertySet方法

如果Bean实现了DisposableBean接口,调用它的Destory方法

如果Bean声明了初始化方法,调用此初始化方法·

自动装配模式:

No

默认的方式是不进行自动装配,通过手工设置ref 属性来进行装配bean

ByName

按属性名称,@Resource默认按 byName自动注入

ByTYPe

按类型:@Autowrite默认按byType自动注入

Construct

构造方法中的参数通过byType的形式,自动装配

Default

由上级标签<beans>的default-autowire属性确定

BeanFactory和ApplicationContext有什么区别:

1).BeanFactroy采用的是延迟加载形式来注入Bean的。

而ApplicationContext则相反,它是在容器启动时,一次性创建了所有的Bean。
2).BeanFactory和ApplicationContext都支持BeanPostProcessor、BeanFactoryPostProcessor的使用,但两者之间的区别是:BeanFactory需要手动注册,而ApplicationContext则是自动注册

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值