【Spring入门学习02】核心接口、Spring XML方式开发、Spring 注解开发

本文详细介绍了Spring框架的入门步骤,包括在pom.xml中导入依赖,编写Dao接口和实现类,创建Spring核心配置文件并配置Bean。接着,深入探讨了ApplicationContext和BeanFactory的核心接口,讲解了Bean的生命周期和获取Bean的方法。进一步阐述了Spring的XML配置,如Bean的基本属性、作用范围、生命周期、实例化方式和依赖注入。最后,文章讨论了Spring的注解开发,包括原始注解如@Component、@Autowired、@Value和新注解如@Configuration、@ComponentScan等,展示了如何使用注解简化配置。
摘要由CSDN通过智能技术生成

1 spring快速开始

步骤
  1. 在 pom.xml 中导入依赖
  2. 编写 Dao 接口和实现类(创建Bean)
  3. 创建 Spring 核心配置文件
  4. 在 Spring 配置文件中配置 UserDaoImpl
  5. 使用 Spring 的 API 获得 Bean 实例(用getBean方式获取对象)
1.1 在 pom.xml 中导入依赖
<properties>
	<spring.version>5.0.5.RELEASE</spring.version>
</properties>
<!--导入spring的context坐标,context依赖core、beans、expression-->
<dependencies> 
    <dependency>  
        <groupId>org.springframework</groupId> 
        <artifactId>spring-context</artifactId> 
        <version>${spring.version}</version>
    </dependency>
</dependencies>

1.2 编写Dao接口和实现类
public interface UserDao {
     
    public void save();
}

public class UserDaoImpl implements UserDao {
     
        @Override  
        public void save() {
   
        	System.out.println("UserDao save method running....");
	}
}
1.3 创建Spring核心配置文件

resources下添加spring配置文件,一般约定叫applicationContext.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">
</beans>
1.4 在Spring配置文件中配置UserDaoImpl

添加一个bean,作为UserDaoImpl的容器

<?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="userDao" class="com.itheima.dao.impl.UserDaoImpl"></bean>
</beans>

1.5 使用Spring的API获得Bean实例

使用getBean方法获取对象

@Test
public void test1(){
   
	ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
	UserDao userDao = (UserDao) applicationContext.getBean("userDao");
	userDao.save();
 }



2 核心接口介绍

2.1 ApplicationContext和BeanFactory

BeanFactory 和 ApplicationContext 是 Spring 中的两大核心接口,都可以把他们当做 IoC 容器。其中,ApplicationContext 扩展了 BeanFactory 接口,是其子接口。

BeanFactory 是 IoC 容器的最底层接口,提供了完整的 IoC 服务支持。简单来说,BeanFactory 实例就是一个管理 Bean 的工厂,负责初始化各种 Bean,控制 Bean 的生命周期,维护 Bean 之间的依赖关系。

ApplicationContext 是 BeanFactory 接口的派生,除了提供 BeanFactory 所具有的功能外,还提供了更完整的框架功能:

继承 MessageSource,因此支持国际化。
统一的资源文件访问方式。
提供在监听器中注册bean的事件。
同时加载多个配置文件。
载入多个(有继承关系)上下文 ,使得每一个上下文都专注于一个特定的层次,比如应用的web层。
  • 理解

    • BeanFactory 可以理解为一个 HashMap,key 是 BeanName,value 是 Bean 实例,对外提供注册(put)和获取(get)两个功能,是一个 “低级容器”。
    • ApplicationContext 继承了多个接口,除了 BeanFactory 所具有的功能,还具有更多的框架功能。从命名就可以看出,ApplicationContext 已经不仅仅是 BeanFactory 之类的工厂,而是”应用上下文”,是一个高级容器
    • 需要注意,ApplicationContext 的“高级容器”和 BeanFactory 的“低级容器”之间的关系是依赖,而不是继承,“高级容器”依赖着 “低级容器” 的 getBean 等功能。
  • 区别

    加载方式:BeanFactroy 采用的是延迟加载策略来创建 Bean,即只有在使用到某个 Bean 时,才对该 Bean 进行加载实例化;而 ApplicationContext 采取的是立即加载策略来创建 Bean,在容器启动时,一次性创建了所有的 Bean。
    创建方式:BeanFactory 通常以编程的方式被创建,ApplicationContext 还能以声明的方式创建,如使用 ContextLoader。
    注册方式:BeanFactory 需要手动注册,而 ApplicationContext 则是自动注册。

2.2 ApplicationContext的实现类
  • ClassPathXmlApplicationContext
    它是从类的根路径下加载配置文件,推荐使用

  • FileSystemXmlApplicationContext
    它是从磁盘路径上加载配置文件,配置文件可以在磁盘的任意位置。

  • AnnotationConfigApplicationContext
    当使用注解配置容器对象时,需要使用此类来创建 spring 容器。它用来读取注解。

2.3 getBean()方法使用
  • 当参数的数据类型是字符串时,表示根据Bean的id从容器中获得Bean实例,返回是Object,需要强转。
  • 当参数的数据类型是Class类型时,表示根据类型从容器中匹配Bean实例。当容器中相同类型的Bean有多个时,只能用ID获取,此方法会报错。
//方法定义1
public Object getBean(String name) throws BeansException {
     
	assertBeanFactoryActive();   
	return getBeanFactory().getBean(name);
}

//方法定义2
public <T> T getBean(Class<T> requiredType) throws BeansException {
      			    	assertBeanFactoryActive();
	return getBeanFactory().getBean(requiredType);
}

使用

ApplicationContext applicationContext = new  ClassPathXmlApplicationContext("applicationContext.xml");
  UserService userService1 = (UserService) applicationContext.getBean("userService");
  UserService userService2 = applicationContext.getBean(UserService.class);



3 Spring XML 配置

Spring的重点配置总结

<Bean>标签
	id属性:在容器中Bean实例的唯一标识,不允许重复
	class属性:要实例化的Bean的全限定名
	scope属性:Bean的作用范围,默认Singleton,还有protptype
	<property>标签:属性注入
		name属性:属性名称
		value属性:注入的普通属性值
		ref属性:注入的对象引用值
		<list>标签
		<map>标签
		<properties>标签
	<constructor-arg>标签
<import>标签:导入其他的Spring的分文件
3.1 Bean标签-- 基本属性:
id:Bean实例在Spring容器中的唯一标识
name:指定 bean 的别名,可以有多个,用逗号或分号隔开。不常用,一般使用 id 属性即可。
class:Bean的全限定名称。默认调用的是类中的无参构造函数,如果没有无参构造函数则不能创建成功。
3.2 Bean标签–作用范围

scope:指对象的作用范围,取值如下:

取值范围
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值