目录
- Spring框架概述
- IOC(控制反转)
- 1、基于XML方式
- 1.1 创建对象
- 1.2 注入属性
- 2、基于注解方式
- 2.1 spring基于注解创建对象
- 2.3 基于注解注入属性
Spring框架概述
轻量级的、开源的JavaEE框架
解决企业应用开发的复杂性
Spring两个核心部分:IOC、AOP
IOC:控制反转(之前主动创建对象,现在Spring帮助我们创建对象)
AOP:面向切面编程(不修改源代码的情况下,功能增强)
特点
方便解耦,简化开发
方便集成其他框架
方便对事务进行操作
IOC(控制反转)
读作“反转控制”(Inverse of Control)更好理解
这不是什么技术,而是一种 设计思想,就是将原本在程序中手动创建对象的控制权,交由 Spring 框架来 管理
正控:若要使用某个对象,需要自己去负责对象的创建
反控:若要使用某个对象,只需要从 Spring 容器中获取需要使用的对象, 不关心对象的创建过程,也就是把创建对象的控制权反转给了 Spring 框架.
如何用Spring实现IOC?通过下面两个操作来实现
- Spring创建对象
- Spring注入属性
实现的方式分为两种
- 基于XML配置文件实现
- 基于注解方式实现(常用)
1、基于XML方式
1.1 创建对象
①:在Spring配置文件中,使用bean标签,标签里面添加相应属性,就可以实现对象的创建
②:bean标签的属性
id 给创建的对象赋予唯一标识
class 要创建对象的全路径
scope 创建的对象是单例的还是多实例的
singleton:单例的:执行spring就创建对象,只创建一次
prototype:原型的:使用getBean才会创建对象,可创建多次
③:创建对象默认执行无参构造方法(没有无参构造器会报错)
<bean id="student" class="com.ff.bean.Student"></bean>
1.2 注入属性
set方式注入
<!--通过set方法进行依赖注入-->
<bean id="student" class="com.ff.bean.Student">
<!--使用property标签完成属性注入
name:类里面属性名称
value:向属性注入的值
-->
<property name="name" value="张三"></property>
<property name="age" value="18"></property>
<property name="list">
<list>
<value>1</value>
<value>2</value>
<value>3</value>
</list>
</property>
</bean>
构造器注入
<!--通过构造方法进行依赖注入-->
<bean id="student" class="com.ff.bean.Student">
<constructor-arg name="name" value="张三"></constructor-arg>
<constructor-arg name="age" value="18"></constructor-arg>
<constructor-arg name="list">
<list>
<value>1</value>
<value>2</value>
<value>3</value>
</list>
</constructor-arg>
</bean>
2、基于注解方式
2.1 spring基于注解创建对象
① 引入依赖
② 开启组件扫描
<context:component-scan base-package="com.ff"></context:component-scan>
③ 在类上面添加注解(value可以不写,不写的默认值是类名首字母小写)
@Component 一般用于Bean层
@Service 一般用于service层
@Controller 一般用于web层
@Repository 一般用于dao层
2.3 基于注解注入属性
//注入对象
@Autowired 根据属性类型进行自动注入
@Qualifier 根据属性名称进行注入,但是要和Autowired一起使用
@Resources 可以根据类型、也可以根据名称(javax的包)
//注入普通数据类型
@Value 适用于普通类型