继承
自己定义一个json的bean定义读取器,实现相应的方法即可?
... ...
init-method如果用户自定义了自己的初始化方法,则执行
初始化Bean过程
举个例子,不用事实说话,难以服众!
Spring+Spring MVC+Mybatis典型的SSM整合
applyBeanPostProcessorsAfterInitializationbean初始化之后做一些事情(bean增强)
2017.10 4.0
@Configurationpublic class DataSourceConfig{ @Bean public DataSource dataSource(){ return xxx.buildXXX(); }}
IOC容器
前提是实现了InitializingBean接口
销毁容器(调用spring上下文对象的close方法)
BeanFactory的增强器,在bean实例化之前做一些事情
destroy-method用户自定义的bean销毁方法
!
BeanFactoryPostProcessor
@Component(\"userDao\")public class UserDao{......}@Servicepublic class UserService{......}
实现
爷爷
XML配置
其他,比如你想用json来定义bean的话,也不是不可以
Structs主要采用servlet+jsp技术来实现
servlet有个不好的地方就是,需要在代码里面写很多重复的html,而jsp结合servlet后,就省事很多了
配置类
AbstractApplicaitonContext context = new ClassPathXmlApplicationContext(\"bean.xml\");
读取bean的定义到ioc容器中
儿子
1、通过XML配置bean,定义bean的描述信息
JSP.jsp文件中,穿插html和java代码,文件会在容器中转成成servlet执行
Spring框架的优点1、轻量级,非侵入式设计,使得应用程序对框架的依赖最小化2、方便解耦,简化开发,因为对象的创建和对象间的依赖关系甚至是对象的生命周期都统一交给了ioc容器管理,大大降低了组件之间的耦合性3、支持AOP(面向切面编程),对一些通用的任务,如事务、日志、安全等操作进行集中处理,增加了程序的复用性,本来每个类中的业务方法都要加一个日志记录,使用AOP后,你可以定义切面、切点、通知类型,来统一处理切点作用域下的所有的方法,对方法的执行前后进行增强操作4、支持声明式的事务,只需要注解一加,便可以省去很多人工手写代码来进行事务的提交和回滚5、对第三方框架的集成友好,比如mybatis、quartz等6、测试方便,提供了junit4的支持,可以通过@Test注解,很方便的完成Spring程序的测试7、减低了javaee api的使用难度,如提供对jdbc、javamail的封装优点总结一句就是:spring帮你能想到的和没想到的都考虑了,你只管用,避免了重复造轮子的时间成本缺点:1、大量使用反射,对内存有一定消耗
EJB(分布式)RMI技术,客户端调用服务端的类,实现某些功能
AbstractBeanDefinitionReader类抽象bean定义读取器
BeanFactory(Spring顶层接口)
Spring Boot约定大于配置,一切从简快速构建Web项目
afterPropertiesSet初始化,给定值
PropertiesBeanDefinitionReader
Java Web框架的前世今生
ClassPathXmlApplicationContext
配置Bean的三种方式
2、通过注解配置bean,如在类上加注解
3、通过Java配置类的方式配置bean
什么是bean的定义?其实就是对象的描述信息,比如这个对象所在的类是否是抽象的、是否是接口、是否是单例的、是否是懒加载的等等举个例子吧,如果要建一栋楼,首先要有图纸设计,那beandefinition就是设计,其次根据bean定义才可以去完成对象的实例化和初始化,只有实例化的对象才算是一个可以真正能被我们拿来使用的
整个Spring bean的完整生命周期,当然里面还有很多细节并没有描绘出来,需要亲自跟好几遍源码才能深入了解
applyBeanPostProcessorsBeforeInitializationbean初始化之前做一些事情(bean增强)
Spring
DisposableBean 的 destroy方法
XMLBeanDefinitionReader
BeanDefinitions
<?xml version=\"1.0\" encoding=\"UTF-8\"?><beans xmlns=\"http://www.springframework.org/schema/beans\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\"> <bean id=\"a\" class=\"com.appleyk.pojo.A\"> <property name=\"name\" value=\"appleyk\"/> </bean></beans>
根据bean的定义开始实例化对象
对象实例化在内存开辟一块区域
Java配置类
JsonBeanDefinitionReader
<?xml version=\"1.0\" encoding=\"UTF-8\"?><beans xmlns=\"http://www.springframework.org/schema/beans\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\"> <bean id=\"a\" class=\"com.appleyk.pojo.A\"> <property name=\"name\" value=\"appleyk\"/> </bean></beans>
Servlet服务端小程序最早的web框架
父亲
BeanDefinitionReader接口bean定义读取器
invokeAwareMethods调用Aware实现类
1997.06 1.0
populateBean填充属性,默认值