spring bean配置记录
scope: singleton, prototype, request, session, globle sesssion
默认为singleton
id和name的区别:
id是唯一标识bean.不能用特殊字符:×#@ ,不能用数字开头。在bean引用的时候只能有id指向你需要的bean
name 可以用特殊字符,并且一个bean可以用多个名称:name=“bean1,bean2,bean3” ,用逗号隔开。如果没有id,则name的第一个名称默认是id
通过id和name都可以取出该Bean.
<bean id=“thisbean” name=“bean1,bean2,bean3” class=“org.example.Dao" />
BeanFactory factory=new XmlBeanFactory(new ClassPathResource("config.xml"));
bean definition inheritance(bean 定义继承)
1 配置文件继承
<bean id="baseDaoImpl" abstract="true"> <property name="name" value="baseName"></property> <property name="age" value="11"></property> </bean> <bean id="testDaoImpl" class="main.daoImpl.TestDaoImpl" parent="baseDaoImpl"> <property name="age" value="1"></property> </bean>
如上所示:testDaoImpl的bean配置了baseDaoImpl的配置,bean没有指定具体class,如果子配置没有配置具体的属性,则从父配置中继承;如果配置了则覆盖父配置中的值
2 类继承配置
java类:
public class BaseDaoImpl extends HibernateDaoSupport { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } public class TestDaoImpl extends BaseDaoImpl { }
对应spring配置:
<bean id="baseDaoImpl" class="main.daoImpl.BaseDaoImpl" abstract="true"> <property name="name" value="baseName"></property> <property name="age" value="11"></property> <property name="sessionFactory" ref="mySessionFactory"></property> </bean> <bean id="testDaoImpl" class="main.daoImpl.TestDaoImpl" parent="baseDaoImpl"> <property name="age" value="1"></property> </bean> <bean id="testService" class="main.service.TestService"> <constructor-arg index="0" ref="testDaoImpl"></constructor-arg> </bean>
测试代码:
@Test public void testA() throws IOException { try { TestService testService = (TestService)context.getBean("testService"); TestDaoImpl testDaoImpl = testService.getTestDaoImpl(); System.out.println("name: " + testDaoImpl.getName() + " age:" + testDaoImpl.getAge() + " sessionFactory:" + testDaoImpl.getSessionFactory()); } catch (Exception e) { e.printStackTrace(); } finally { } }
测试结果:name: baseName age:1 sessionFactory:org.hibernate.impl.SessionFactoryImpl@b02928
baeDaoImpl类在配置文件中配置成了abstract,不能再进行实例化,如果尝试去实例化会报错!
相关推荐
创建SpringBean配置工具类(安全)如: <bean id=... scope="prototype"></bean>
在实际开发中,我们可以使用Eclipse的Spring插件来简化Bean配置的创建和管理,同时结合Maven来构建和运行Spring应用。 通过以上内容,你应该对Spring框架中的Bean XML配置有了初步的理解。掌握这些知识点后,你将...
- **SpringBean配置**:针对报销单维护的具体需求,配置相应的SpringBean,实现业务逻辑处理。 #### SpringBean配置详解 - **应用级配置**:主要涉及整个应用级别的配置信息,如数据源、事务管理等。 - **构件包...
在提供的“BeanTest”文件中,我们可以预期看到一个简单的Spring Bean配置和测试示例。通常,这将包括以下部分: 1. **Bean定义**:Bean定义是Spring容器如何创建和管理Bean的描述。它可以是一个XML配置文件中的...
- **XML配置**:在传统的Spring应用中,Bean的定义通常写在XML配置文件中,如`springbean-xml`中的配置。 - **注解配置**:使用`@Component`,`@Service`,`@Repository`和`@Controller`注解标记类,配合`@...
在本文中,我们将深入探讨Spring中的Bean配置,包括IoC和DI的概念,Bean的配置方式,以及不同类型的IOC容器。 **Spring的Bean配置**: 在Spring中,Bean是应用中的对象,它们由Spring IoC容器负责创建、管理和装配...
以下是对Spring Bean配置的详细解释: 1. `<beans>` 根元素:这是Spring配置文件的起点,它包含了所有的Bean定义。Spring容器会解析这个文件并创建相应的Bean实例。 2. `<bean>` 元素:这是Spring配置中最常见的...
在Spring框架中,Bean的创建和初始化是IoC(Inversion of Control)容器的核心功能,这一过程涉及到多个...Spring的IoC容器使得应用更加灵活和易于测试,因为Bean的依赖关系可以通过配置来调整,而不是硬编码在代码中。
现在,考虑到压缩包文件名称`spring_02_bean`,这可能是一个关于Spring Bean配置的代码示例或教程。在这样的资源中,你可能会找到如何在XML配置文件中声明Bean、设置别名以及指定作用范围的实际示例代码。通过阅读和...
Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class文件,动态实现spring bean 的动态加载,并通过UrlClassLoader完成jar和class文件的加载。可以实现jar的热替换。spring的bean动态加载则需要对...
综上所述,Spring Bean重复执行两次的问题通常是由于配置错误、依赖注入循环、初始化回调的不当使用、静态工厂方法的误用、AOP代理的配置问题或是Bean作用域设置不准确导致的。通过仔细检查和修正这些问题,可以避免...
### Spring的Bean配置详解 #### 一、Spring配置文件根元素`<beans>`解析 - **功能概述**:`<beans>`是Spring配置文件的根元素,用来包含一个或多个`<bean>`元素,用于定义Spring容器管理的各种Bean。 #### 二、`...
本文将深入解析如何利用`PropertyPlaceholderConfigurer`进行bean配置的properties操作,包括单个properties文件的配置、多个properties文件的集成以及多个`PropertyPlaceholderConfigurer`的协同工作,旨在帮助...
Spring的`<beans>`和`<bean>`元素及其属性提供了强大的配置能力,使开发者能够灵活地定义、配置和管理应用程序中的组件。通过深入了解这些元素和属性,开发人员可以更有效地利用Spring框架的功能,构建更加健壮和可...
在Spring配置文件中,我们需要定义一个工厂bean,然后指定该工厂bean的`factory-bean`属性,以及工厂bean中用于创建目标bean的方法,即`factory-method`属性。下面是一个简单的例子: ```xml <bean id="myFactory...
`@Component`注解的类会自动被Spring扫描并注册为Bean,而`@Configuration`类则提供了更高级别的配置方式,可以替代XML配置文件。 此外,Spring提供了一种名为BeanPostProcessor的接口,它允许我们自定义Bean实例化...
ApplicationContextInitializer 是 Spring 上下文初始化类,负责加载配置文件和注册 Bean。通过查看源码,我们可以发现 Spring 自动加载配置文件的代码。 SpringApplication 运行 SpringApplication 的 run 方法是...
Spring会首先读取这些配置源,将其转换为Bean定义。 2. **Bean定义注册**: 解析后的配置会被转化为BeanDefinition对象,包含Bean的类名、依赖、初始化方法等信息。这些BeanDefinition被注册到Spring的...
Spring 中控制 2 个 bean 的初始化顺序 在 Spring 框架中,控制多个 bean 的初始化顺序是一个常见的问题。本篇文章将详细介绍如何控制 2 个 bean 的初始化顺序,提供了多种实现方式,并分析了每种方式的优缺。 ...
在Spring框架中,Bean的生命周期管理是其核心特性之一,它允许开发者控制Bean从创建到销毁的整个过程。本资源提供了在Spring 4.2环境下关于Bean生命周期的测试代码,帮助我们深入理解这一关键概念。 首先,让我们...