一、Spring基础 1.Xml配置Bean (1)DI注入属性:name为set方法去掉set之后首字母小写,ref为bean的id,需要有set方法,Spring会自动调用进行注入 (2)BeanFactory与ApplicationContext: ApplicationContext内部封装了BeanFactory,功能更加强大。 加载xml文件使用ClassPathXmlApplicationContext("applicationContext.xml") (3)BeanFactory(bean工厂)与ApplicationContext(容器)对比: 所有在xml里配置的Bean标签最后都会转换为BeanDefinition对象存放在beanFactory里的beanDefinitionMap中。实例化完成的Bean对象存放在singletonObjects当中。 FileSystemXmlApplicationContext是加载磁盘里具体位置的xml文件。不同环境下会出现不同的容器,比如导入spring-web包时,会有web环境下的容器。 (4)基于xml Spring框架是Java开发中广泛应用的轻量级框架,它的核心特性包括依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented Programming,AOP)。在本文中,我们将深入探讨Spring的基础知识,尤其是关于XML配置Bean、BeanFactory与ApplicationContext、Bean的作用范围以及Bean的实例化过程。 让我们关注XML配置Bean。在Spring中,我们通常使用XML文件来声明和配置Bean。DI是Spring的重要特性,它允许我们在不修改代码的情况下改变对象之间的依赖关系。例如,当我们在XML中设置Bean的属性时,`name`通常是setter方法名去掉`set`后的首字母小写,`ref`则是要注入的Bean的ID。Spring会自动调用setter方法完成注入。如果Bean没有设置ID,那么Spring会使用类的全限定名作为默认ID。我们还可以为Bean配置多个别名,用逗号分隔。 BeanFactory和ApplicationContext是Spring中的两种主要容器。BeanFactory是最基础的容器,它负责管理Bean的生命周期。而ApplicationContext则在BeanFactory的基础上增加了更多功能,如支持国际化的消息资源、处理AOP等。加载XML配置文件通常使用`ClassPathXmlApplicationContext`,若要加载磁盘上的XML文件,则使用`FileSystemXmlApplicationContext`。在不同环境下,如引入`spring-web`包,会有特定环境的容器。 Bean的作用范围有两种:singleton(单例)和prototype(多例)。默认情况下,Bean是单例的,这意味着在整个应用中,只有一个Bean实例。prototype则表示每次请求都会创建一个新的Bean实例。我们可以通过`lazy-init`属性控制Bean的加载时机,为`true`时,Bean会在首次使用时才被实例化。 初始化和销毁方法也是Bean管理的重要部分。我们可以在XML中通过`init-method`和`destroy-method`指定初始化和销毁方法,或者实现`InitializingBean`和`DisposableBean`接口,覆盖`afterPropertiesSet()`和`destroy()`方法。此外,`constructor-arg`和`factory-bean`、`factory-method`用于配置Bean的构造方式实例化和工厂方式实例化。对于复杂的依赖注入,Spring还支持集合类型的数据注入,如List、Map、Properties和Set。 自动装配(autowire)是Spring提供的一种简化依赖注入的方式,分为byType和byname两种模式。byType会根据类型匹配Bean进行注入,byname则根据Bean的名称进行匹配。默认命名空间下,还有`beans`用于指定环境、`alias`用于配置别名、`import`用于导入其他配置文件。 Bean的实例化过程大致分为以下几个步骤:解析XML配置文件,将Bean定义转换成BeanDefinition对象,然后创建Bean实例。在实例化过程中,Spring会执行初始化方法,完成依赖注入,最后将Bean放入适当的作用域(如单例池)。 了解这些基本概念后,开发者可以更好地利用Spring框架来构建可扩展、松耦合的Java应用程序。无论是简单的Java项目还是复杂的Web应用,Spring都能提供强大而灵活的支持。
剩余8页未读,继续阅读
- 粉丝: 6270
- 资源: 526
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助