Spring常用属性的注入及属性编辑器

简介:                   对于对象的注入,我们使用ref方式,可以指定注入的对象,下面看下对于基本类型的注入,以及当spring无法转换基本类型进行注入时,如何编写一个类似转换器的东西来完成注入。


      

           对于对象的注入,我们使用ref方式,可以指定注入的对象,下面看下对于基本类型的注入,以及当spring无法转换基本类型进行注入时,如何编写一个类似转换器的东西来完成注入。


一,基本类型的注入


           下面写一个简单类,来看下spring中对于基本类型的注入:


      


   

<bean id="bean1" class="com.shuitian.spring.Bean1">
	
		<!-- <property name="strValue" value="hello_spring"/> --><!-- 也可以使用下面的方式 -->
		
		<!-- private String strValue -->
		<property name="strValue">
			<value>hello_spring</value>
		</property>
		
		<!-- private int intValue; -->
		<property name="intValue" value="123"/>
		
		<!-- private List listValue; -->
		<property name="listValue">
			<list>
				<value>list1</value>
				<value>list2</value>
			</list>
		</property>
		
		<!-- private Set setValue; -->
		<property name="setValue">
			<set>
				<value>set1</value>
				<value>set2</value>
			</set>
		</property>
		
		<!-- private String[] arrayValues; -->
		<property name="arrayValues">
			<list>
				<value>array1</value>
				<value>array2</value>
			</list>
		</property>
		
		<!-- private Map mapValue; -->
		<property name="mapValue">
			<map>
				<entry key="k1" value="v1"/>
				<entry key="k2" value="v2"/>
			</map>
		</property>
		
		
		
	</bean>


二,属性编辑器


            在测试类中加入java.util.Date:


       


配置:

<property name="dateValue" value="2009-12-12"/>


         如果像前面那样配置dataValue,为他注入值,会因为string在转换Date的时候spring无法识别util.Date而报错,所以,我们要自己定义一个类,来将如果转换的这一过程写下来。


        

/*
 * java.util.date属性编辑器
 */
public class UtilDatePropertyEditor extends PropertyEditorSupport{

	private String pattern;//日期时间格式
	

	public void setPattern(String pattern) {
		this.pattern = pattern;
	}

	@Override
	public void setAsText(String text) throws IllegalArgumentException {
		try {
			Date d=new SimpleDateFormat(pattern).parse(text);
			this.setValue(d);//设置转换后的值
		} catch (ParseException e) {
			e.printStackTrace();
		}
		
	}
}

      注意要继承PropertyEditorSupport类并实现setAsText方法。


      转换器的配置:


<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

	<bean id="customEditors"
		class="org.springframework.beans.factory.config.CustomEditorConfigurer">
		<!-- 属性编辑器要放到 CustomEditorConfigurer  类的 customEditors(Map类型)成员变量上面去 -->
		<property name="customEditors">
			<map>
				<entry key="java.util.Date">
				<!-- 内部bean,只内部使用 -->
					<bean class="com.shuitian.spring.UtilDatePropertyEditor">
						<!-- 注入日期时间格式 -->
						<property name="pattern" value="yyyy-MM-dd"/>
					</bean>
				</entry>
			</map>
		</property>
	</bean>
	
	<!-- 不想通过外界访问到 -->
	<!-- <bean id="utilDatePropertyEditor" class="com.shuitian.spring.UtilDatePropertyEditor"> 
		</bean> -->
		
</beans>


   add进spring的源码,围观下:






     这一配置的原因就是,我们要将自己定义的属性编辑器,放到CustomEditorConfigurer 它的customEditors里面,这样spring才能使用到它。









目录
相关文章
|
1月前
|
XML Java 开发者
Spring Boot中的bean注入方式和原理
Spring Boot中的bean注入方式和原理
44 0
|
3月前
|
Java 程序员 Spring
Spring5深入浅出篇:Spring对象属性注入详解
Spring5深入浅出篇:Spring对象属性注入详解
|
4月前
|
Java 开发者 Spring
Spring中获取Bean对象的三种注入方式和两种注入方法
Spring中获取Bean对象的三种注入方式和两种注入方法
|
7天前
|
JSON Java 数据库连接
属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践
属性注入掌握:Spring Boot配置属性的高级技巧与最佳实践
14 1
|
29天前
|
前端开发 Java Maven
属性编辑器未在PropertyEditorManager中注册?
属性编辑器未在PropertyEditorManager中注册?
12 0
|
1月前
|
XML Java 数据格式
解释Spring中一个bean的注入过程
解释Spring中一个bean的注入过程
|
2月前
|
Java Spring
Spring 使用注解注入失败,调用内容时提示空指针
Spring 使用注解注入失败,调用内容时提示空指针
14 0
|
2月前
|
Java Spring
Spring注入类的两种形式
Spring注入类的两种形式
49 0
Spring注入类的两种形式
|
3月前
|
Java API Nacos
spring.config.import 是一个 Spring Cloud Config Server 的属性,
spring.config.import 是一个 Spring Cloud Config Server 的属性,【1月更文挑战第25天】【1月更文挑战第123篇】
50 1
|
3月前
|
缓存 Java Spring
Spring5源码(25)-Spring填充bean属性及应用生命周期接口
Spring5源码(25)-Spring填充bean属性及应用生命周期接口
38 0

热门文章

最新文章