Spring笔记(1)——IOC容器

什么是IOC?
控制反转,把对象的创建和对象之间的调用过程交给Spring管理,使代码的耦合度降低。

1.IOC底层原理

(1)xml解析
(2)工厂模式
(3)反射

原理:
第一步:
配置xml文件
在这里插入图片描述
第二步:利用工厂模式
通过解析xml文件来获取class属性值,再通过反射创建对象并将其返回。
在这里插入图片描述

2. IOC接口

IOC思想基于IOC容器完成,IOC容器底层就是对象工厂
(1)BeanFactory:IOC容器基本实现,不提供给开发人员使用(加载配置文件时不创建对象,获取对象时才创建对象)
(2)ApplicationContext:BeanFactory借口的子接口(加载配置文件时就创建对象)

3. IOC操作Bean管理

什么事Bean管理
(1)Spring创建对象
(2)Spring注入属性

4.基于XML方式

4.1 创建对象

在spring配置中添加bean标签
id:唯一标识
class:类的全路径

<bean id="userDao" class="com.swjtu.dao.impl.UserDaoImpl"></bean>

4.2 DI(依赖注入)

(1)使用set方法注入
1.声明属性,并且创建set方法
2.在spring配置文件中先创建对象,再注入属性

<bean id="userService" class="com.swjtu.service.impl.UserServiceImp">
    <property name="userDao" ref="userDao"></property>
</bean>

(2)通过有参构造注入
1.创建类,定义属性
2.在spring配置文件中配置

<bean id="userService" class="com.swjtu.service.impl.UserServiceImp">
    <constructor-arg name="userDao" ref="userDao"></constructor-arg>
</bean>

4.3 两种Bean

普通Bean:spring配置文件中定义什么类型就返回什么类型
工厂Bean:在配置文件中定义的Bean类型可以和返回的Bean类型不一样

4.4 bean的作用域

设置创建的bean实例是单实例还是多实例

4.5 Bean的生命周期

生命周期:从对象的创建到销毁的过程

(1)通过无参数构造创建Bean实例
(2)为Bean的属性设置值和对其他bean的引用
(3pre)在初始化之前执行的方法
(3)调用bean的初始化方法(配置)
(3post)再初始化之后执行的方法
(4)bean可以使用
(5)当容器关闭的时候,调用bean的销毁方法

4.6 自动装配(基于xml方式使用较少)

根据指定装配规则(属性名称或者属性类型),Spring自动将匹配的属性值进行注入
设置bean标签的 autowire属性

4.7 外部属性文件

(1)引入context名称空间
(2)引入外部属性文件
在这里插入图片描述

5.基于注解方式

5.1 创建对象

@Component 普通注解
@Service service层
@Controller web层
@Repository dao层

(1)引入依赖:

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>5.3.9</version>
    </dependency>

(2)开启组件扫描
添加context命名空间并设置标签

<context:component-scan base-package="testdemo"></context:component-scan>

(3)创建类并添加注解

5.2 注入属性

@AutoWired 根据属性类型进行自动注入
第一步:service和dao类添加注解
第二步:再service类中定义dao类型属性并加入注解Autowired
@Qualifier 根据属性名称进行注入

@Resource 可以根据类型注入,也可以根据名字注入

@Value

5.3 完全注解开发

(1)创建注解类代替 xml配置文件
添加注解@configuration
(2)添加注解扫描
@ComponentScan(basePackages=“”)
(3)new app对象时使用AnnotationConfigApplicationContext()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值