SSM spring Bean基础配置
在 Spring 框架中,Bean 是一个非常核心的概念。简单来说,Bean 是 Spring 容器管理的对象,它是由 Spring 容器实例化、配置和管理的。Spring 通过依赖注入(DI)将这些 Bean 组合在一起,形成一个完整的应用程序。
什么是 Bean?
Bean 是 Spring 框架中的一个基本单元,通常是一个普通的 Java 对象(POJO),但它被 Spring 容器管理。Spring 容器负责 Bean 的生命周期,包括创建、初始化、依赖注入、销毁等。
Bean 的特点
-
实例化:
-
Spring 容器负责创建 Bean 的实例。
-
可以通过配置文件(XML)、注解(如
@Component
、@Service
、@Controller
、@Repository
)或 Java 配置类来定义 Bean。
-
-
依赖注入:
-
Spring 容器会自动注入 Bean 所需的依赖关系。
-
依赖注入可以通过构造器注入(Constructor Injection)或 setter 方法注入(Setter Injection)来实现。
-
-
生命周期管理:
-
Spring 容器管理 Bean 的生命周期,包括初始化、使用和销毁。
-
可以通过实现
InitializingBean
接口或定义@PostConstruct
注解的方法来定义初始化逻辑。 -
可以通过实现
DisposableBean
接口或定义@PreDestroy
注解的方法来定义销毁逻辑。
-
-
作用域:
-
Bean 可以有不同的作用域,如
singleton
(单例)、prototype
(原型)、request
(请求)、session
(会话)等。 -
默认情况下,Bean 的作用域是
singleton
,即容器中只有一个实例。
-
基础配置
<?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">
<!--name:为bean指定别名,别名可以有多个,使用逗号,分号,空格进行分隔--><bean id="bookService" name="service service4 bookEbi" class="com.itheima.service.impl.BookServiceImpl"><property name="bookDao" ref="bookDao"/></bean>
别名配置
作用范围
默认创建为单例对象 scope 默认 singleton
运行如下代码
package com.itheima;import com.itheima.dao.BookDao;
import com.itheima.service.BookService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class AppForScope {public static void main(String[] args) {ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");BookDao bookDao1 = (BookDao) ctx.getBean("bookDao");BookDao bookDao2 = (BookDao) ctx.getBean("bookDao");System.out.println(bookDao1);System.out.println(bookDao2);}
}
输出如下:
这时应在bean对象配置里加入参数scope。
<?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"><!--name:为bean指定别名,别名可以有多个,使用逗号,分号,空格进行分隔--><bean id="bookService" name="service service4 bookEbi" class="com.itheima.service.impl.BookServiceImpl"><property name="bookDao" ref="bookDao"/></bean><!--scope:为bean设置作用范围,可选值为单例singloton,非单例prototype--><bean id="bookDao" name="dao" class="com.itheima.dao.impl.BookDaoImpl" scope="prototype" />
</beans>