Spring的几个常用的Bean声明

本文介绍了Spring框架中常见的Bean配置示例,包括消息源、属性值、数据库连接池、Hibernate设置等,适用于快速搭建Spring应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   在做Spring相关开发时,时常要用到一些相关的Bean的声明,如数据库连接池,hibernateSessionFactory声明等。一下是一些常用到的Bean声明。



1 Message source的声明,重要用于系统的信息提示。

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">

<property name="basename"><value>messages</value></property>

</bean>

2 属性值的声明,主要为Bean声明文件中使用:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

<property name="locations">

<list>

<value>WEB-INF/mail.properties</value>

<value>WEB-INF/jdbc.properties</value>

</list>

</property>

</bean>

3 Custom Editor的注册,以下是日期的注册:

<bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer">

<property name="customEditors">

<map>

<entry key="java.util.Date">

<bean class="org.springframework.beans.propertyeditors.CustomDateEditor">

<constructor-arg index="0">

<bean class="java.text.SimpleDateFormat">

<constructor-arg><value>yyyy-MM-dd</value></constructor-arg>

</bean>

</constructor-arg>

<constructor-arg index="1"><value>false</value></constructor-arg>

</bean>

</entry>

</map>

</property>

</bean>

4 数据库连接池的设置:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

<property name="driverClassName"><value>${jdbc.driverClassName}</value></property>

<property name="url"><value>${jdbc.url}</value></property>

<property name="username"><value>${jdbc.username}</value></property>

<property name="password"><value>${jdbc.password}</value></property>

</bean>

5 hibernate的设置:

<bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">

<property name="dataSource"><ref local="dataSource"/></property>

<property name="mappingResources">

<value>mapping.xml</value>

</property>

<property name="hibernateProperties">

<props>

<prop key="hibernate.dialect">${hibernate.dialect}</prop>

</props>

</property>

</bean>

6 Jotm的事务设置:

<bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean"/>

<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">

<property name="userTransaction"><ref local="jotm"/></property>

</bean>

7 Hibernate的事务设置:

<bean id="hibernateTransactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager">

<property name="sessionFactory"><ref local="sessionFactory"/></property>

</bean>

8 Bean的事务声明:

<bean id="clinic" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

<property name="transactionManager"><ref local="hibernateTransactionManager"/></property>

<property name="target"><ref local="clinicTarget"/></property>

<property name="transactionAttributes">

<props>

<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>

<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>

<prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>

<prop key="store*">PROPAGATION_REQUIRED</prop>

</props>

</property>

</bean>

9 Email的发送者声明:

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">

<property name="host"><value>${mail.host}</value></property>

</bean>

10 基本Url Mapping的设置:

<bean id="DemoController" class="cn.edu.bit82.DemoController"/>

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

<property name="mappings">

<props>

<prop key="/hello.html">DemoController</prop>

<prop key="*">SecondController</prop>

</props>

</property>

</bean>

总结: 以上是一些常用的Bean的声明,你一般会用到的,你可以使用IntelliJLive Template功能,可以设置某些参数,很快就完成了Bean的声明。 

Spring框架中的Bean生命周期是其核心机制之一,理解该生命周期对于开发和调试基于Spring的应用至关重要。整个生命周期从Bean的创建到销毁,涉及多个关键阶段,每个阶段都可以通过特定的接口或注解进行扩展和干预。 ### 1. 实例化阶段(Instantiation) 在Spring容器启动时,首先会根据配置信息(如XML配置文件或注解)创建Bean的实例。这一阶段,Spring会通过反射机制调用类的构造方法来创建一个未初始化的对象。此时,Bean的属性尚未被赋值,依赖关系也未被处理。 ### 2. 属性注入阶段(Population of Properties) 在实例化完成后,Spring容器会根据配置文件或注解,将配置的属性值或依赖对象注入到Bean实例中。这一阶段包括属性设置和依赖注入两个关键步骤。例如,如果一个Bean依赖于另一个BeanSpring会自动解析并注入该依赖。 ```java public class MyBean { private String name; public void setName(String name) { this.name = name; } } ``` ### 3. BeanPostProcessor前置处理(Post-Process Before Initialization) 在Bean的初始化方法调用之前,Spring会调用所有注册的`BeanPostProcessor`接口中的`postProcessBeforeInitialization`方法。这一阶段允许开发者对Bean进行自定义的修改或增强。例如,可以在此阶段对Bean进行代理封装,或者修改其属性值。 ```java @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { // 自定义逻辑 return bean; // 返回原始Bean或包装后的Bean } ``` ### 4. 初始化阶段(Initialization) 在Bean的属性注入完成后,Spring会调用Bean的初始化方法。初始化可以通过以下几种方式实现: - **实现`InitializingBean`接口**:该接口提供了一个`afterPropertiesSet`方法,用于定义初始化逻辑。 - **自定义初始化方法**:通过`@Bean(initMethod = "init")`或XML配置中的`init-method`属性指定自定义的初始化方法。 - **使用`@PostConstruct`注解**:该注解标注的方法会在Bean的所有依赖注入完成后执行。 ```java @Service public class CacheService implements InitializingBean { @Override public void afterPropertiesSet() throws Exception { System.out.println("CacheService初始化"); } @PostConstruct public void setup() { System.out.println("通过@PostConstruct初始化"); } } ``` ### 5. BeanPostProcessor后置处理(Post-Process After Initialization) 在Bean的初始化方法调用完成后,Spring会再次调用所有注册的`BeanPostProcessor`接口中的`postProcessAfterInitialization`方法。这一阶段通常用于对已经初始化的Bean进行进一步的处理,例如生成代理对象。 ```java @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { // 自定义逻辑 return bean; // 返回原始Bean或增强后的Bean } ``` ### 6. 使用阶段(In Use) 经过初始化阶段后,Bean已经准备好,可以被应用程序使用。此时,Bean处于活跃状态,能够响应来自其他组件的请求。 ### 7. 销毁阶段(Destruction) 当Spring容器关闭时,会触发Bean的销毁过程。销毁可以通过以下几种方式实现: - **实现`DisposableBean`接口**:该接口提供了一个`destroy`方法,用于定义销毁逻辑。 - **自定义销毁方法**:通过`@Bean(destroyMethod = "destroy")`或XML配置中的`destroy-method`属性指定自定义的销毁方法。 - **使用`@PreDestroy`注解**:该注解标注的方法会在Bean销毁之前执行。 ```java @Service public class CacheService implements DisposableBean { @Override public void destroy() throws Exception { System.out.println("CacheService销毁"); } @PreDestroy public void cleanUp() { System.out.println("通过@PreDestroy清理资源"); } } ``` ### 8. 容器管理流程 在整个生命周期中,Spring容器通过管理Bean的创建、初始化、使用和销毁,确保了Bean的生命周期与容器的生命周期保持一致。开发者可以通过实现特定的接口或使用注解,对Bean的生命周期进行扩展和干预,从而满足不同的业务需求。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值