为了更好的看出BeanFactory和ApplicationContext之间的区别 , 在BookDaoImpl添加如下构造函数:
public class BookDaoImpl implements BookDao {public BookDaoImpl() {System.out.println("constructor");}public void save() {System.out.println("book dao save ..." );}}如果不去获取bean对象 , 打印会发现:
- BeanFactory是延迟加载 , 只有在获取bean对象的时候才会去创建
- ApplicationContext是立即加载 , 容器加载的时候就会创建bean对象
- ApplicationContext要想成为延迟加载 , 只需要按照如下方式进行配置
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"lazy-init="true"/></beans>
容器相关
- BeanFactory是IoC容器的顶层接口 , 初始化BeanFactory对象时 , 加载的bean延迟加载
- ApplicationContext接口是Spring容器的核心接口 , 初始化时bean立即加载
- ApplicationContext接口提供基础的bean操作相关方法 , 通过其他接口扩展其功能
- ApplicationContext接口常用初始化类
- ClassPathXmlApplicationContext(常用)
- FileSystemXmlApplicationContext

文章插图
依赖注入相关

文章插图
注解开发在上述的开发中 , 我们采用xml配置文件的形式来说依旧显得有些复杂
这时我们就需要发挥Spring的优点:简化开发 , 通过注解来简化开发过程
下面我们会通过多个方面将Bean逐步转化为注解
注解开发Bean在前面的内容中 , 我们的bean在xml配置文件中装配
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--原生bean--><bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/></beans>在后期 , 我们的bean可以采用注解的形式 , 直接在实现类中注解表示为bean我们采用@Component定义bean , 可以添加参数表示id , 也可以不添加参数 , 后期我们采用class类的类型来进行匹配
package com.itheima.dao.impl;import com.itheima.dao.BookDao;import org.springframework.stereotype.Component;import org.springframework.stereotype.Controller;import org.springframework.stereotype.Repository;//@Component定义bean@Component("bookDao")public class BookDaoImpl implements BookDao {public void save() {System.out.println("book dao save ...");}}package com.itheima.service.impl;import com.itheima.dao.BookDao;import com.itheima.service.BookService;import org.springframework.stereotype.Component;import org.springframework.stereotype.Service;//@Component定义bean@Componentpublic class BookServiceImpl implements BookService {private BookDao bookDao;public void setBookDao(BookDao bookDao) {this.bookDao = bookDao;}public void save() {System.out.println("book service save ...");bookDao.save();}}@Componenty延伸出了三种类型 , 在实现手法上是一致 , 但可以具体使用于各种类中(仅用于自我识别)
经验总结扩展阅读
- 手机指南针怎么看(指南针怎么看方向)
- 指南针怎么看方向(指南针罗盘)
- 指南针怎么看东南西北(指南针怎么看家里方位)
- 星姿妍彩妆是什么牌子的彩妆?
- 飞甩鸡毛是什么牌子?
- 爱琪梅花是什么电视剧中的人物?
- 晒斑和黄褐斑的区别是什么?
- 父母爱情安泰结局是什么?
- 晒黑了怎么快速变白?
- 飞乔是什么牌子?
