Spring mvc 提供了扩展 xml 的机制,用来编写自定义的 xml bean ,例如 dubbo 框架,就利用这个机制实现了好多的 dubbo bean,比如 <dubbo:application> .<dubbo:registry> 等等,只要安装这个标准的扩展方式实现配置即可. 扩展自定义 bean 的意义何在 假设我们要使用一个开源框架或者一套 API,我们肯定希望以下两点: 易用性,即配置简单,要配置的地方越少越好 封装性,调用简单,也就是越高层封装越好,少暴露底层…
Filter和Servlet中不能直接注解使用spring的bean,因为这两个都是servlet容器维护管理的,当然也有实现方法,如下: 1.创建一个AbstractServlet 抽象类,让你的所有servlet继承于此类: import java.io.IOException; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpSe…
实现自动装配需要用注解:注解分为 spring规范和java规范 ,java规范需要引入javax.inject 包 ,使用maven,直接引入. 从中可以看到 @Named @Inject属于java规范,@Component  @Autowired @Resource属于spring注解 @Named大致等效于@Component 而@Inject和@Autowired也相似,但是@Inject要强制注入,@Autowired(required=false)可以选择略过不报异常 实例: 1.…
案例一 定义接口  CD.java package interfacepackage; public interface CD { void play(); } 定义接口 player .java package interfacepackage; //定义一个播放器接口 public interface player { void play(); } 定义接口的实现类   CD1.java package bean; import org.springframework.stereotype.…
Bean对象创建 默认是随着容器创建 可以使用 lazy-init=true:在调用 getBean 延迟创建 也可以用 <beans default-lazy-init="true"/> 批量延迟创建 Bean对象的创建模式 默认是单例,可以使用scope属性改变. singleton:单例,每次调用getBean返回同一个对象 prototype:原型,每次调用getBean返回一个新的对象 Bean对象初始化和销毁 init-method 属性用于指定初始化方法 sp…
在网上搜了许多,感觉不够全面,就找了官方文档,下面记录如何找到对应的文档进入 网上许多博客都是以dateformat为实例进行编写的,通过官方的foo,能够学到更多的东西,下面贴一段代码,在官方示例上改了一点解析代码: package com.theory.springdemo; import java.util.List; import org.springframework.beans.factory.config.BeanDefinition; import org.springframe…
前言 在目前的Spring Boot框架中,不管是Spring Boot官方还是非官方,都提供了非常多的starter系列组件,助力开发者在企业应用中的开发,提升研发人员的工作效率,Spring Boot框架提出的约定大于配置的规则,确实帮助开发者简化了以前Spring MVC时代的很多繁杂的配置.让开发者用起来也是非常爽的. 尽管Spring Boot或者一些开源组件已经帮助我们提供了非常多的starter组件,在满足日常的开发中,已经完全没有问题了.但有时候因为需求的可变性,导致企业架构也会…
1.背景:     工作中是否有这样的场景?一个软件系统会同时有多个不同版本部署,比如我现在做的IM系统,同时又作为公司的技术输出给其他银行,不同的银行有自己的业务实现(比如登陆验证.用户信息查询等): 又或者你的工程里依赖了公司的二方包A,A又依赖了B...这些jar包里的组件都是通过Spring容器来管理的,如果你想改B中某个类的逻辑,但是又不可能让架构组的人帮你打一份特殊版本的B:怎么办呢?是否可以考虑下直接把Spring容器里的某个组件(Bean)替换成你自己实现的Bean? 2.原理&…
spring:自定义限定符注解@interface, 首选bean 1.首选bean 在声明bean的时候,通过将其中一个可选的bean设置为首选(primary)bean能够避免自动装配时的歧义性.当遇到歧义性的时候,Spring将会使用首选的bean,而不是其他可选的bean.实际上,你所声明就是“最喜欢”的bean. 假如有一个接口类: public interface Dessert{}.... 其中有3个类都集成了它@Componentpublic class Cake impleme…
本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 Starter 组件 摘录:读书是读完这些文字还要好好用心去想想,写书也一样,做任何事也一样 图 2 第二章目录结构图 第 2 章 Spring Boot 配置 Spring Boot 配置,包括自动配置和外化配置.本章先实现自定义属性工程,将属性外化配置在 application.properties 应用配置文件,然后在工程中获取该属性值.接着会详细介绍属性的获取方式.外化配置和自动配置.最后会介绍利用自动配置自定义 Start…