???级特性
一、对象的?命周期
1. 什么是对象的?命周期
指的是?个对象创建、存活、消亡的?个完整过程
2. 为什么要学习对象的?命周期
由Spring负责对象的创建、存活、销毁,了解?命周期,有利于我们使?好Spring为我们创建的对象
3. ?命周期的3个阶段
二、配置?件参数化
把Spring配置?件中需要经常修改的字符串信息,转移到?个更?的配置?件中
- Spring的配置?件中存在需要经常修改的字符串?
存在 以数据库连接相关的参数 代表 经常变化 字符串,在Spring的配置?件中,直接修改 不利于项?维护(修改)- 转移到?个?的配置?件(
.properties ) 利于维护(修改)
配置?件参数化:利于Spring配置?件的维护(修改)
1. 配置?件参数的开发步骤
名字:随便 放置位置:随便
jdbc.driverClassName = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/achang?useSSL=false
jdbc.username = root
jdbc.password = 123456
- **Spring的配置?件与?配置?件进?整合**
applicationContext.xml
?```xml
<context:property-placeholder location="classpath:/db.properties"/>
- 在Spring配置?件中通过${key}获取?配置?件中对应的值
三、?定义类型转换器
1. 类型转换器
2. ?定义类型转换器
-
原因: 当Spring内部没有提供特定类型转换器时,?程序员在应?的过程中还需要使?,那么就需要程序员??定义类型转换器 -
类 implements Converter接? public class MyDateConverter implements Converter<String, Date> {
@Override
public Date convert(String source) {
Date date = null;
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
date = sdf.parse(source);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}
-
在Spring的配置?件中进?配置
-
MyDateConverter对象创建出来 <bean id="myDateConverter" class="xxxx.MyDateConverter"/>
-
类型转换器的注册
- ?的:
告知Spring框架,我们所创建的MyDateConverter是?个类型转换器
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<ref bean="myDateConverter"/>
</set>
</property>
</bean>
3. 细节
-
MyDateConverter中的?期的格式,通过依赖注? 的?式,由配置?件完成赋值 。 public class MyDateConverter implements Converter<String, Date> {
private String pattern;
public String getPattern() {
return pattern;
}
public void setPattern(String pattern) {
this.pattern = pattern;
}
@Override
public Date convert(String source) {
Date date = null;
try {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
date = sdf.parse(source);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}
<bean id="myDateConverter"
class="com.baizhiedu.converter.MyDateConverter">
<property name="pattern" value="yyyy-MM-dd"/>
</bean>
-
ConversionSeviceFactoryBean 定义 id属性 值必须 conversionService -
Spring框架内置?期类型的转换器 ?期格式:2020/05/01 (不?持 :2020-05-01)
四、后置处理Bean
注意:BeanPostProcessor接?
xxxx(){
}
程序员实现 BeanPostProcessor 规定接?中的?法:
Object postProcessBeforeInitiallization(Object bean String beanName)
作?:Spring创建完对象,并进?注?后,可以运?Before?法进?加?
获得Spring创建好的对象 :通过?法的参数最终通过返回值交给Spring框架
Object postProcessAfterInitiallization(Object bean String beanName)
作?:Spring执?完对象的初始化操作后,可以运?After?法进?加?获得Spring创建好的对象 :通过?法的参数
最终通过返回值交给Spring框架
实战中:
很少处理Spring的初始化操作:没有必要区分Before After。只需要实现其中的?个After?法即可
注意:
postProcessBeforeInitiallization
return bean对象
-
BeanPostProcessor的开发步骤
-
类 实现 BeanPostProcessor接? public class MyBeanPostProcessor implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
Categroy categroy = (Categroy) bean;
categroy.setName("achang");
return categroy;
}
}
-
Spring的配置?件中进?配置 <bean id="myBeanPostProcessor" class="xxx.MyBeanPostProcessor"/>
-
BeanPostProcessor细节 BeanPostProcessor会对Spring??中所有创建 的对象进?加? 。
|