Spring核心容器补充及注解开发定义bean及纯注解开发模式

118 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 2 天,点击查看活动详情

目录

一、创建容器(2种)

二、获取bean(3种)

三、容器类层次结构图

四、BeanFactory初始化

五、注解开发定义bean

六、纯注解开发


一、创建容器(2种)

方式一:加载类路径下的配置文件

ClassPathXmlApplicationContext

ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

方式二:从文件系统中加载配置文件

FileSystemXmlApplicationContext

ApplicationContext ctx = new FileSystemXmlApplicationContext("D:\workspace\spring\spring_10_container\src\main\resources\applicationContext.xml");

不管哪种方式都能加载多个配置文件

加载多个配置文件

ApplicationContext ctx = new ClassPathXmlApplicationContext("bean1.xml","bean2.xml");

二、获取bean(3种)

方式一:使用bean名称获取

BookDao bookDao = (BookDao) ctx.getBean("bookDao");

方式二:使用bean名称获取并指定类型

BookDao bookDao = ctx.getBean("bookDao",BookDao.class);

方式三:使用bean类型获取

BookDao bookDao = ctx.getBean(BookDao.class);

注意: 按类型查找容器中这个类型的bean只能有一个,多个的话会报错。

三、容器类层次结构图

 四、BeanFactory初始化

类路径加载配置文件

        Resource resources = new ClassPathResource("applicationContext.xml");
        BeanFactory bf = new XmlBeanFactory(resources);
        BookDao bookDao = bf.getBean("bookDao",BookDao.class);
        bookDao.save();

 BeanFactory创建完毕后,所有bean均为延迟加载

五、注解开发定义bean

使用@Component定义bean

@Component("bookDao")
public class BookDaoImpl implements BookDao {
}
@Component
public class BookServiceImpl implements BookService {
}

核心配置文件中通过组件扫描加载bean

<context:component-scan base-package="com.itheima"/>

Spring提供@Compoent注解的三个衍生注解

@Controller:用于表现层bean的定义

@Service:用于业务层bean定义

@Repository:用于数据层bean定义

@Repository("bookDao")
public class BookDaoImpl implements BookDao {
}
@Service
public class BookServiceImpl implements BookService {
}

六、纯注解开发

Spring3.0升级纯注解开发模式,使用Java类替代配置文件,开启了Spring快速开发赛道。

Java类代替Spring核心配置文件:

//声明当前类为Spring配置类
@Configuration
//设置bean扫描路径,多个路径书写为字符串数组格式
@ComponentScan({"com.itheima.service","com.itheima.dao"})
public class SpringConfig {
}

@Configuration注解用于设定当前类为配置类

@ComponentScan注解用于设定扫描路径,此注解只能添加一次,多个数据请用数组格式

@ComponentScan({"com.itheima.service","com.itheima.dao"})

读取Spring核心配置文件初始化容器对象切换为读取Java配置类初始化容器对象

//加载配置文件初始化容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

 纯注解时读取Java配置类初始化容器对象

//AnnotationConfigApplicationContext加载Spring配置类初始化Spring容器
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);