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();  
            }  
    }
}


相关文章
|
6月前
|
缓存 Java 开发者
【Spring】原理:Bean的作用域与生命周期
本文将围绕 Spring Bean 的作用域与生命周期展开深度剖析,系统梳理作用域的类型与应用场景、生命周期的关键阶段与扩展点,并结合实际案例揭示其底层实现原理,为开发者提供从理论到实践的完整指导。
750 22
|
6月前
|
人工智能 Java 开发者
【Spring】原理解析:Spring Boot 自动配置
Spring Boot通过“约定优于配置”的设计理念,自动检测项目依赖并根据这些依赖自动装配相应的Bean,从而解放开发者从繁琐的配置工作中解脱出来,专注于业务逻辑实现。
2197 0
|
5月前
|
XML Java 测试技术
《深入理解Spring》:IoC容器核心原理与实战
Spring IoC通过控制反转与依赖注入实现对象间的解耦,由容器统一管理Bean的生命周期与依赖关系。支持XML、注解和Java配置三种方式,结合作用域、条件化配置与循环依赖处理等机制,提升应用的可维护性与可测试性,是现代Java开发的核心基石。
|
5月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
619 2
|
7月前
|
Java 关系型数据库 数据库
深度剖析【Spring】事务:万字详解,彻底掌握传播机制与事务原理
在Java开发中,Spring框架通过事务管理机制,帮我们轻松实现了这种“承诺”。它不仅封装了底层复杂的事务控制逻辑(比如手动开启、提交、回滚事务),还提供了灵活的配置方式,让开发者能专注于业务逻辑,而不用纠结于事务细节。
1011 1
|
12月前
|
Java 测试技术 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——少量配置信息的情形
本课主要讲解Spring Boot项目中的属性配置方法。在实际开发中,测试与生产环境的配置往往不同,因此不应将配置信息硬编码在代码中,而应使用配置文件管理,如`application.yml`。例如,在微服务架构下,可通过配置文件设置调用其他服务的地址(如订单服务端口8002),并利用`@Value`注解在代码中读取这些配置值。这种方式使项目更灵活,便于后续修改和维护。
273 0
|
11月前
|
存储 人工智能 自然语言处理
RAG 调优指南:Spring AI Alibaba 模块化 RAG 原理与使用
通过遵循以上最佳实践,可以构建一个高效、可靠的 RAG 系统,为用户提供准确和专业的回答。这些实践涵盖了从文档处理到系统配置的各个方面,能够帮助开发者构建更好的 RAG 应用。
5090 116
|
10月前
|
前端开发 Java 数据库连接
Spring核心原理剖析与解说
每个部分都是将一种巨大并且复杂的技术理念传达为更易于使用的接口,而这就是Spring的价值所在,它能让你专注于开发你的应用,而不必从头开始设计每一部分。
279 32
|
8月前
|
缓存 安全 Java
Spring 框架核心原理与实践解析
本文详解 Spring 框架核心知识,包括 IOC(容器管理对象)与 DI(容器注入依赖),以及通过注解(如 @Service、@Autowired)声明 Bean 和注入依赖的方式。阐述了 Bean 的线程安全(默认单例可能有安全问题,需业务避免共享状态或设为 prototype)、作用域(@Scope 注解,常用 singleton、prototype 等)及完整生命周期(实例化、依赖注入、初始化、销毁等步骤)。 解析了循环依赖的解决机制(三级缓存)、AOP 的概念(公共逻辑抽为切面)、底层动态代理(JDK 与 Cglib 的区别)及项目应用(如日志记录)。介绍了事务的实现(基于 AOP
291 0
|
8月前
|
监控 架构师 NoSQL
spring 状态机 的使用 + 原理 + 源码学习 (图解+秒懂+史上最全)
spring 状态机 的使用 + 原理 + 源码学习 (图解+秒懂+史上最全)

热门文章

最新文章