spring整合教程

Spring框架概述

1,IOC和DI

ioc:控制反转

即控制权的转移,将我们创建对象的方式反转了,以前对象的创建是由我们开发人员自己维护,包括依赖关系也是自己注入。使用了spring之后,对象的创建以及依赖关系可以由spring完成创建以及注入,反转控制就是反转了对象的创建方式,从我们自己创建反转给了程序创建(spring)

DI: Dependency Injection 依赖注入
spring这个容器中,替你管理着一系列的类,前提是你需要将这些类交给spring容器进行管理,然后在你需要的时候,不是自己去定义,而是直接向spring容器索取,当spring容器知道你的需求之后,就会去它所管理的组件中进行查找,然后直接给你所需要的组件.
实现IOC思想需要DI做支持
注入方式: 1.set方式注入 2.构造方法注入 3.字段注入
注入类型: 1.值类型注入 2.引用类型注入

好处:

1.降低组件之间的耦合度,实现软件各层之间的解耦.

2.可以使容器提供众多服务如事务管理消息服务处理等等。当我们使用容器管理事务时,开发人员就不需要手工 控制事务,也不需要处理复杂的事务传播

3.容器提供单例模式支持,开发人员不需要自己编写实现代码.

4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能

5.容器提供众多的辅佐类,使这些类可以加快应用的开发.如jdbcTemplate HibernateTemplate

2.applicationContext & BeanFactory区别 BeanFactory接口
BeanFactory接口:
(1)spring 的原始接口,针对原始接口的实现类功能较为单一
(2)BeanFactory接口实现类的容器,特点是每次获得对象时才会创建对象
ApplicationContext接口:
(1)每次容器启动时就会创建容器中配置的所有对象
(2)提供了更多功能
(3)从类路径下加载配置文件: ClassPathXmlApplicationContext
从硬盘的绝对路径下加载配置文件:FileSystemXmlApplication

3.spring配置详解

3.1、元素属性

bean元素:使用该元素描述需要spring容器管理对象
name属性:给被管理的对象起个名字,获得对象时getBean("name值")
class属性:被管理对象的完整类名
id属性:与name属性一模一样,名称不可重复,不能使用特殊字符

name和id之间的一些注意点:
1、配置两个相同的 id 或者 name 都不能通过。
2、如果既配置了 id ,也配置了 name ,则两个都生效。如果id和name都没有指定,则用类全名作为name,如,则你可以通过getBean(“com.stamen.BeanLifeCycleImpl”)返回该实例。
3、如果配置基本类的时候,注解和配置文件都使用的时候,注解和配置文件中 name 相同的时候, 则两个冲突,配置文件生效。
如果配置基本类的时候,注解和配置文件都使用的时候,注解和配置文件中 name 不相同的时候, 则两个不冲突,都能够生效。

3.2、bean元素进阶( scope属性 生命周期属性)—————单例多例
(1)scope属性
(1)singleton 默认值
单例对象 :被标识为单例的对象在spring容器中只会存在一个实例
(2)prototype
多例原型:被标识为多例的对象,每次在获得才会被创建,每次创建都是新的对象
(3)request
Web环境下,对象与request生命周期一致
(4)session
Web环境下,对象与session生命周期一致
总结:绝大多数情况下,使用单例singleton(默认值),但是在与struts整合时候,务必要用prototype多例,因为struts2在每次请求都会创建一个新的Action,若为单例,在多请求情况下,每个请求找找spring拿的都是同一个action。
(2)生命周期属性(了解)———初始化和销毁
(1)配置一个方法作为生命周期初始化方法,spring会在对象创建之后立刻调用 init-method
(2)配置一个方法作为生命周期的销毁方法,spring容器在关闭并销毁所有容器中的对象之前调用destory-method
对应注解为@PostConstruct

<bean name=“hello” class=“完整类名”></bean>                                 对应注解为@PreDestory

(3)模块化配置,即分模块配置(导入其他spring配置文件)



3.3、spring三种对象的创建方式

(1)空参数构造(重要)

在这里插入图片描述

(2)静态工厂创建(调用静态方法创建)

调用UserFactory类的静态createUser方法创建名为user的对象,放入容器
在这里插入图片描述
(3)实例工厂创建(调用非静态方法创建)——需要配置两个bean,因为无法通过类名调用非静态方法
在这里插入图片描述

3.4、spring注入方式 (1)set方式注入(重点)————值类型用value注入 引用类型用ref注入

(2)构造方法注入
在这里插入图片描述
函数注入
(3)p名称空间注入———实际上set注入,spring特有,为了简化写法

1、applicationContext.xml中标签头部导入p命名空间

xmlns:p=“http://www.springframework.org/schema/p”
2、书写格式:值类型注入—— p:属性名=“值” 引用类型注入—— p:属性名-ref=“引用的 name属性”
把Run类中的name属性值设置为haha,age属性设置为20,引用属性hello引用
在这里插入图片描述
(4)spel注入: spring Expression Language spring表达式语言
在这里插入图片描述
SpEL特性:(1)、使用Bean的ID来引用Bean;(2)、调用方法和访问对象的属性;(3)、对值进行算术、关系和逻辑运算;(4)、正则表达式匹配;(5)、集合操作

关于spel https://www.cnblogs.com/goodcheap/p/6490896.html

复杂类型注入

1.array数组的注入

在这里插入图片描述

2.list集合的注入
在这里插入图片描述

3.map集合的注入
在这里插入图片描述

4.propertie在这里插入图片描述
s的注入

在这里插入图片描述

4、防止创建多个applicationContext取值/并指定记载spring配置文件的位置——web.xml

在这里插入图片描述

5、使用注解方式代替配置文件(官方推荐使用注解) 1.在applicationContext.xml中书写指定扫描注解

在这里插入图片描述

2.在类中书写Component

在这里插入图片描述
注意:假如不写括号内的值(即name或id),默认使用类名首字母小写作为搜索,为什么意思呢?

比如Student类中使用了@Component 没有书写括号和值,那么默认搜索id或name为student。

3.指定对象的作用范围Scope

在这里插入图片描述
声明Student类对象为多例 下面是对singleton和prototype的一些补充
在这里插入图片描述

8、spring整合jdbc

spring中提供了一个可以操作数据库的对象,对象封装了jdbc技术 ————JDBCTemplate JDBC模板对象,而JdbcDaoSupport则对JdbcTemplate进行了封装,所以要操作JdbcTemplate,或只需要继承JdbcDaoSupport即可。

在这里插入图片描述
在这里插入图片描述
依赖关系配置:
在这里插入图片描述
测试:
在这里插入图片描述

9、spring中的aop事务

在这里插入图片描述

事务的四大基本特性:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值