生命周期:
在每个Spring Ioc容器中的一个bean定义只有一个对象实例。默认情况下会在容器启动时初始化bean,但我们可以指定bean节点的lazy-init="true"来延迟,这时候只有第一次获取bean时初始化bean:
<bean id="personService" class="com.river.service.impl.PersonServiceBean" lazy-init="true"/>
如果想对所有的bean都应用延迟初始化,则在beans加lazy-init="true",如下:
<beans lazy-init="true" ...>
测试:
在PersonServiceBean中的默认构造方法中加入:
public PersonServiceBean()
{
System.out.println("我被初始化了");
}
测试方法:
public void instanceSpring()
{
ApplicationContext ctx = new ClassPathXmlApplicationContext ("beans.xml");
}
没加入lazy-init="true"时:
测试结果:我被初始化了
加入了lazy-init="true"时:
测试结果:无
bean作用域:
测试单实例:
bean:配置<bean id="personService" class="com.river.service.impl.PersonServiceBean" />
测试方法:
public void instanceSpring()
{
//RiverClassPathXMLApplicationContext ctx = new RiverClassPathXMLApplicationContext("beans.xml");
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
PersonService ps = (PersonService) ctx.getBean("personService");
PersonService ps1 = (PersonService) ctx.getBean("personService");
System.out.println(ps==ps1);
}
测试结果:true;
如希望每次的对象都是不同的 需改变其作用范围:
<bean id="personService" class="com.river.service.impl.PersonServiceBean" scope="prototype" />
其中prototype为每次一个不同对象。
测试:
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
PersonService ps = (PersonService) ctx.getBean("personService");
PersonService ps1 = (PersonService) ctx.getBean("personService");
System.out.println(ps==ps1);
结果 false;
分享到:
相关推荐
在Spring框架中,Bean的作用域是管理对象生命周期和作用范围的关键概念。Bean的定义通常包含在XML配置文件中,通过`<bean>`标签进行配置。当我们谈论"SSH笔记-bean的作用域"时,这里SSH指的是Spring、Struts和...
本文将从Bean的概念、作用、配置、生命周期和依赖注入等方面展开,帮助你构建全面的Bean知识体系。 1. **Bean的概念**: Spring中的Bean是Java对象,由Spring容器管理其创建、初始化、装配以及销毁。通过定义Bean...
【标题】"spring学习笔记(五)"主要涵盖了Spring框架中关于Bean的作用域(Bean Scope)这一核心概念。在Spring框架中,Bean Scope是控制对象生命周期和单例或多例行为的关键。接下来,我们将深入探讨这个主题。 ...
除了基本的`@Component`家族,Spring还提供了一些高级注解,如`@Scope`用于定义Bean的作用域,`@Lazy`用于延迟初始化Bean,`@Qualifier`用于在多个相同类型的Bean中指定特定的一个。 ### **总结** Spring的自动...
5. **Bean的Scope**:Spring提供了多种Bean的作用域,如单例(Singleton)、原型(Prototype)、请求(Request)、会话(Session)等,可以根据需求选择合适的Bean作用域。 6. **注解驱动开发**:Spring 2.5引入了...
- Bean的生命周期和作用域 - XML与注解配置的区别与使用 - AOP的原理与应用 - Spring MVC的流程和配置 - 数据库连接池的配置和使用 - 事务管理的实现 - Spring Boot的快速开发特性 - Spring Security的基本配置和...
例如,使用`@Component`、`@Service`、`@Repository`和`@Controller`定义Bean,`@Autowired`实现自动依赖注入,`@Scope`定义Bean的作用域等。 ```java @Service public class ServiceImpl implements Service { @...
在Spring中,Bean的作用域可以定义Bean的生命周期和可见性。文档中提到了“singleton”和“prototype”两个作用域。默认作用域是singleton,意味着Spring IoC容器中只会创建Bean的一个实例。而prototype作用域则每次...
5. **初始化和销毁方法**:可以使用`init-method`和`destroy-method`指定Bean的初始化和销毁方法,这两个方法会在Bean的生命周期中特定时刻自动调用。 6. **其他属性**:如`abstract`用于定义抽象Bean,`autowire-...
- **3.4 Bean的作用域**:Bean可以有多种作用域,如单例(Singleton)、原型(Prototype)、请求(Request)、会话(Session)等,理解不同作用域对对象生命周期的影响至关重要。 ### 3. **AOP(Aspect-Oriented ...
Hibernate: 第一课:第一个hibernate项目 第二课:测试实体对象的生命周期 ...第三课:spring Bean的作用域 第四课:spring对AOP的只是(采用Annotation的方式) 第五课:spring对AOP的只是(采用配置文件的方式)
Spring的bean作用域(scope)定义了bean的生命周期,包括单例(singleton)、原型(prototype)等。懒加载(lazy-init)和默认的懒加载设置可以控制bean何时被初始化。另外,init-method和destroy-method用于指定bean的初始...
Bean的作用域控制了Bean实例的生命周期和可见度,主要有两种: 1. **Singleton作用域**(默认):在Spring IoC容器中,每个Bean定义只有一个实例。可配置`lazy-init`属性控制初始化时机。 2. **Prototype作用域**...
7. **Bean的作用域**:Spring定义了多种Bean的作用域,包括单例(Singleton)、原型(Prototype)、请求(Request)、会话(Session)等,这些作用域决定了Bean的生命周期和并发行为。 8. **初始化函数和消亡函数**...
在 Spring 容器中,Bean 的作用域决定了一个 Bean 实例的生命周期和可见范围。默认情况下,每个 Bean 在容器中只有一个实例,即 `singleton` 模式。 - **Prototype 作用域**:通过在 `bean` 标签中设置 `scope=...
`containsBean()`用于检查容器中是否存在指定的Bean,而`isSingleton()`和`isPrototype()`则分别用来判断Bean的生命周期策略是单例还是原型。此外,`getType()`和`getAliases()`则分别获取Bean的类型和别名。 ...
- **Bean的作用域**:在父子容器中,Bean的作用域可以不同。例如,全局的单例Bean(Singleton)在父容器中创建,而请求级别的Bean(RequestScope)则在子容器中创建并管理。 - **Bean的初始化与销毁**:父子容器...
在处理bean生命周期时,可以使用@PostConstruct和@PreDestroy注解来定义初始化和销毁方法。 Bean的作用域包括Singleton(单例)、Prototype(原型)、Request、Session和GlobalSession。Spring Boot默认大多数bean...
包含了Spring框架的基本概念,如Bean工厂、ApplicationContext、Bean的作用域、依赖注入的基础知识,以及如何创建和配置Bean。 9. **SqlMapClientTemplate对Ibatis的封装**: Spring对MyBatis(原SqlMap)的集成...