Spring自定义属性编辑器及原理解释.md

简介: Spring自定义属性编辑器及原理解释.md

bean的自动装配解释


  • 之前有构造注入和设值注入,但是也是手动的
  • autowire =”byname”
  • 这里要注意自动装配的话,不能装配特殊类型,比如日期类型(要用自定义属性编辑器


手动解决方式


我们知道的普通是这样解决的:

<bean id="myBean" class="com.bean.myBean">
        <property name="date" ref="date"/>
    </bean>
    <bean id="date" class="java.util.Date">
    </bean>  


自动注入解决方式


但是要自动注入要用自定义属性编辑器

         

原理:类似于拦截器,当遇到map中需要过滤的类型时,就按照所配置的属性编辑器处理注入的值,这个值的类型是String类型的,由属性编辑器来决定转换类型。


    <!--自定义属性编辑    -->
    <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">   <!--配置一个自定义编辑器-->  
        <property name="customEditors">
            <map>  
                <entry key="java.util.Date">  
                    <bean class="com.bean.DateTest">  
                        <property name="date" value="yyyy-mm-dd" />  <!--注入需要转换的格式,注入到DateTest 中-->  
                    </bean>  
                </entry>  
            </map>  
        </property>  
    </bean>  
    <bean id="md" class="com.bean.myBean">  
        <property name="date">  
            <value>2011-1-1</value>  
        </property>  
    </bean>  
package com.bean;
import java.beans.PropertyEditorSupport;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class DateTest extends PropertyEditorSupport{
    private String date;//表示格式,是自动注入的
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    @Override
    public void setAsText(String text) throws IllegalArgumentException {
        System.out.println("text:"+text);
         SimpleDateFormat sdf = new SimpleDateFormat(date);
        Date date = null;
        try {
            date = sdf.parse(text);//传的是字符串,解析为Date数据
            this.setValue(date);  
            } catch (ParseException e) {  
                e.printStackTrace();  
            }  
    }
}


相关文章
|
29天前
|
安全 Java 数据库
一天十道Java面试题----第四天(线程池复用的原理------>spring事务的实现方式原理以及隔离级别)
这篇文章是关于Java面试题的笔记,涵盖了线程池复用原理、Spring框架基础、AOP和IOC概念、Bean生命周期和作用域、单例Bean的线程安全性、Spring中使用的设计模式、以及Spring事务的实现方式和隔离级别等知识点。
|
27天前
|
Java
Spring5入门到实战------9、AOP基本概念、底层原理、JDK动态代理实现
这篇文章是Spring5框架的实战教程,深入讲解了AOP的基本概念、如何利用动态代理实现AOP,特别是通过JDK动态代理机制在不修改源代码的情况下为业务逻辑添加新功能,降低代码耦合度,并通过具体代码示例演示了JDK动态代理的实现过程。
Spring5入门到实战------9、AOP基本概念、底层原理、JDK动态代理实现
|
27天前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
28天前
|
XML Java 数据格式
Spring5入门到实战------2、IOC容器底层原理
这篇文章深入探讨了Spring5框架中的IOC容器,包括IOC的概念、底层原理、以及BeanFactory接口和ApplicationContext接口的介绍。文章通过图解和实例代码,解释了IOC如何通过工厂模式和反射机制实现对象的创建和管理,以及如何降低代码耦合度,提高开发效率。
Spring5入门到实战------2、IOC容器底层原理
|
30天前
|
Java 程序员 数据库连接
女朋友不懂Spring事务原理,今天给她讲清楚了!
该文章讲述了如何解释Spring事务管理的基本原理,特别是针对女朋友在面试中遇到的问题。文章首先通过一个简单的例子引入了传统事务处理的方式,然后详细讨论了Spring事务管理的实现机制。
女朋友不懂Spring事务原理,今天给她讲清楚了!
|
27天前
|
Java 数据安全/隐私保护 Spring
揭秘Spring Boot自定义注解的魔法:三个实用场景让你的代码更加优雅高效
揭秘Spring Boot自定义注解的魔法:三个实用场景让你的代码更加优雅高效
|
28天前
|
缓存 前端开发
ProFlow 流程编辑器框架问题之创建一个自定义节点如何解决
ProFlow 流程编辑器框架问题之创建一个自定义节点如何解决
23 1
|
1月前
|
JSON 安全 Java
|
12天前
|
Java Spring 开发者
Spring 框架配置属性绑定大比拼:@Value 与 @ConfigurationProperties,谁才是真正的王者?
【8月更文挑战第31天】Spring 框架提供 `@Value` 和 `@ConfigurationProperties` 两种配置属性绑定方式。`@Value` 简单直接,适用于简单场景,但处理复杂配置时略显不足。`@ConfigurationProperties` 则以类级别绑定配置,简化代码并更好组织配置信息。本文通过示例对比两者特点,帮助开发者根据具体需求选择合适的绑定方式,实现高效且易维护的配置管理。
26 0
|
14天前
|
缓存 Java 数据库连接
Spring Boot 资源文件属性配置,紧跟技术热点,为你的应用注入灵动活力!
【8月更文挑战第29天】在Spring Boot开发中,资源文件属性配置至关重要,它让开发者能灵活定制应用行为而不改动代码,极大提升了可维护性和扩展性。Spring Boot支持多种配置文件类型,如`application.properties`和`application.yml`,分别位于项目的resources目录下。`.properties`文件采用键值对形式,而`yml`文件则具有更清晰的层次结构,适合复杂配置。此外,Spring Boot还支持占位符引用和其他外部来源的属性值,便于不同环境下覆盖默认配置。通过合理配置,应用能快速适应各种环境与需求变化。
26 0