SPRING的学习笔记

 Spring 是一个开源的控制反转(IOC)和面向切面(AOP)的容器框架,它的主要目的是简化企业软件的开发。

    Spring提供的服务:事务管理服务,jms服务,spring core的服务,持久化的服务,其他……。

    Spring提供单例模式,提供了AOP技术,提供了众多的辅助类,如JdbcTemplateHibernateTemplate

    Spring对于主流的应用框架提供了集成支持,如:集成HibernateJPA(持久化服务)、Struts等,这样便于应用的开发。

1 spring2.5 搭建和测试:

1.1使用spring使用的jar


1.2Spring的配置文件


1.3实例化Spring容器


1.4测试框架

建立java工程,导入Spring.jarlog日志包,建立配置Springbeans.xml)文件,建立junit测试类验证框架,

Junit测试类,如下图所示:


运行测试类,如果没有报错,那么框架搭建成功。

1.5配置帮助信息


1.6 beans配置文件详解

beans.xml配置spring容器要管理的bean,


 

测试Spring容器是否有创建实例


 

Console打印:


   表明:Spring容器创建实例成功。

 

2 Spring管理bean的原理

模拟spring容器创建实例的原理(自创Spring容器):


 


 

测试传智播客Spring容器:


3实例化bean的三种方式

3.1使用类构造器(最常用)

如上所示,一般都是类构造器。

 3.2静态工厂方法


Junit测试……

3.3实例工厂方法实例化


 

4bean的作用域

4.1 sigleton   

 Spring的默认情况下,是单例模式(sigleton),测试如下:


Console打印为true,俩个对象是相同,表明为单例模式。

4.2 prototype

代表每调用一个方法,都会产生新的实例,是在scope(范围)属性里设置。

配置如下:


junit测试验证,console打印为false,俩个对象不相同,表明每次都产生一个新的实例。

5 bean的生命周期

5.1 bean什么时候开始实例化?

1、作用域为sigleton的时候,bean在容器实例化的时候开始实例化。

2、作用域为prototype的时候,bean是在容器对象调用getBean()时候实例化。

5.2 改变bean实例化的时间

Bean标签中有一个lazy_init(延迟实例化)属性可以配置。

  1. lazy_init=true时候,bean容器是在调用getBean()的时候实例化,一般不建议使用(开发的时候),以便于在服务器启动的时候,检查控制台。
  1. lazy_init=false(默认就为false)的时候,bean在容器实例化的时候就已经实例化了,建议使用。

5.3 init_methoddestroy_method属性

1、在init_method属性里面设置要初始化的方法。

2、在destory_method属性里面设置bean消亡的方法。如果不设置bean实例必须是Spring容器停止运行才结束。

6 spring依赖注入

6.1属性setter方法注入


 


 

内部是如何实现的?

………………

6.1.1内部bean依赖注入


6.1.2外部bean和内部bean注入区别

1、外部bean可以为多个bean的属性注入实例。

2、内部bean只能为其父bean的属性注入实例。

6.1.3基本类型值的注入


6.1.4 集合类型的注入


6.2 构造器注入


 

6.3 注解注入

注解方式的注入减轻了xml配置文件的臃肿。那么该如何进行装备呢?


@AutoWired :默认是根据类型进行注入,但是也可以通过配置按名称进行注入,例:


@Autowired @Qualifier(personDaoxx)

Private personDao personDao;

@Autowired(required=false/true)如果required=true的时候,必须注入对象,否则会报错;

Required=false的时候,不要求必须注入,不注入为则为null

@Resource  :先根据name进行注入,如果找不到name值,再根据类型注入。

@Resource实现原理……(源代码传智播客的注解类)

 

7 Spring自动扫描和管理

Spring2.5提供了给配置文件减肥的功能,通过在classpath自动扫描方式把组件纳入spring容器中管理。



配置文件如下:


7.1 bean的名称

配置文件中没有bean文件,那么bean的名称是什么?

spring中默认bean的名称是第一个字母小写的类名,注解中也可以修改bean的名称,如@service(personService)bean的名称由personServiceBean设置为personService,代码如下图:


7.2、修改bean的作用域

bean的作用域(默认为sigleton),通过@Service(personService) @Scope(“prototype”)修改。

7.3设置init方法

@PostConstruct,如下图:


7.4设置destroy方法

@PreDestroy,如下图:


 

8 AOP

面向切面编程……

8.1 JDK代理对象(PROXY)

  1. 静态代理(企业开发很少用)

 

  1. 动态代理(JDK提供了Proxy动态代理类)

目标类必须提供接口

思考的方式:横切性关注点。

动态代理类:


目标类:


8.2 CGLIB实现AOP

 图解:


相关概念:


 

8.3 spring AOP


 

8.3.1注解方式进行AOP开发


 


定义一个切面:


配置文件(把bean交给spring管理):


8.3.2 使用配置文件实现AOP


实例配置:


  1. aspect的切入点语法定义细节:


*号位置代表返回类型,()代表参数表

 

 

9String +JDBC组合开发


 


 

事务详解:


 

 

 

事务传播属性:

事务的四种隔离级:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值