小马哥讲spring学习笔记01

一、Spring的模块化划分

	一共包括20个模块,按照官网的描述,从上到下的排列依次是:
	spring-aop:
	spring-aspects:
	spring-beans:
	spring-context-indexer:
	spring-context-support
	spring-context:
	spring-core:
	spring-expression:
	spring-instrument: javaagent的支持
	spring-jcl: 统一日志管理框架
	spring-jdbc:
	spring-jms: 封装对java的消息机制的支持
	spring-messaging:统一消息服务的实现
	spring-orm:
	spring-oxm: xml的编列
	spring-test:
	spring-tx: spring的事务抽象
	spring-web:
	spring-webflux:
	spring-webmvc:
	spring-websocket:

二、spring的编程模型

2.1 面向对象编程

	契约接口:Aware,BeanPostProcessor...
	设计模式:观察者模式、组合模式、模板模式
	对象继承:Abstract*类

2.2 面向切面编程

	动态代理:JdkDynamicAopProxy
	字节码提升:ASM,CGLIB,AspectJ

2.3 面向元编程

     注解:模式注解(@Component,@Service,	@Respository...)
     配置:Environment抽象、PropertySources、BeanDefinition..
     泛型:GenericTypeResolver、ResolvableType

2.4 函数驱动

	函数接口:ApplicationEventPublisher
	Reactive: Spring WebFlux

2.5 模块驱动

	Maven Artifacts
	Spring	 @Enable*

三、Spring使用者的专属设计模式

3.1前缀模式

3.1.1 Enable模式

3.1.2 Configurable模式

3.2 后缀模式

3.2.1 处理器模式

	(1)xxxProcessor
	(2)xxxResolver
	(3)xxxHanlder

3.2.2 意识模式

	xxxAware

3.2.3 配置器模式

	xxxConfiguror

3.2.4 选择器模式

	xxxImportSelector

四、Spring3.0之前的类型转换、元数据编辑与Java自省机制

4.1 代码示例

public class QuestionnaireInvestigationService {

    public static void main(String[] args) throws IntrospectionException {

        BeanInfo beanInfo = Introspector.getBeanInfo(QuestionnaireInvestigation.class,Object.class);
        PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
        Arrays.stream(propertyDescriptors).forEach(propertyDescriptor -> {

            Class<?> propertyType = propertyDescriptor.getPropertyType();
            if (propertyType.getName().equals("age")) {
                propertyDescriptor.setPropertyEditorClass(StringToIntegerPropertyEditor.class);
            }

        });
    }

    /**
     * 类型转换属性编辑器
     */
    static class StringToIntegerPropertyEditor extends PropertyEditorSupport {

        public void setAsText(String text) throws java.lang.IllegalArgumentException {
            Integer value = Integer.valueOf(text);
            setValue(value);
        }

    }


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值