一、Spring的概述
spring的目标是致力于全方位的简化java开发,如何简化?
- 1、基于pojp的轻量化和最小入侵性编程
- 2、通过依赖注入和面向接口实现松耦合
- 3、基于切面和惯例进行声明式编程
- 4、通过切面和模板减少样板式代码
1、激发pojo的潜能
public class HelloBean{
public sayHello(){
return "hello ";
}
}
2、通过依赖注入方式松耦合
public class UserDaoImpl implement UserDao{
private UserCrud userCrud;
public UserDaoImpl(){
this.userCrud = new UserCrud();
}
public void getUser(){
userCrud.getUser();
}
}
- 说明:
- 在UserDaoImpl的构造函数中创建了一个UserCrud使得UserDaoImpl和UserCrud耦合在一起。
- 使用Spring的注解以后
public class UserDaoImpl implement UserDao{
@Author
private UserCrud userCrud;
public void getUser(){
userCrud.getUser();
}
}
二、Bean的生命周期
1、在java中Bean的生命周期比较简单:
- 1、通过java关键字实例化,
- 2、bean就可以使用
- 3、当bean不再被使用由java自动进行垃圾回收
2、在Spring中Bean的生命周期
- 1、Spring对bean进行实例化
- 2、Spring将值和Bean的引用注入到Bean对应的属性中
- 3、如果Bean实现了BeanNameAware接口,Spring将bean的ID传递给setBean-Name()
- 4、如果bean实现了BeanFactoryAware接口,Spring将调用setBeanFactory()将BeanFactory容器实例传入
- 5、如果bean实现了ApplicationContextAware接口,Spring将调用setApplicationContext()将Bean所在应用上下文传进来
- 6、如果bean实现了BeanPostProceessor接口,Spring将调用他们的post-ProcessbeforInitialization()
- 7、如果Bean实现了InitializingBea接口Spring将调用他们的after-PropertiestSet()
- 8、如果Bean实现了BeanPostProcessor接口Spring将调用他们的post-ProcessAfterInitialization()
- 9、此时bean准备就绪,可以被使用,将停留在应用上下文中,直到应用上下文被销毁
- 10、如果bean实现了DisposableBean接口,Spring将调用它的destory()销毁方法
三、Spring模块
1、数据访问与集成
- 1、jdbc
- 2、Transaction
- 3、ORM
- 4、OXM
- 5、Messaging
- 6、JMS
2、web与远程调用
- 1、web
- 2、Web Servlet
- 3、Web Portlet
- 4、WebSocket
3、面向切面
- 对面向切面编程提供支持
- 1、AOP
- 2、Aspects
4、Instruction
- 提供了为JVM添加代理的功能
- 1、Instrument
- 2、Instrument Tomcat
5、spring核心容器
- 是Spring框架的核心部分,管理Spring应用中Bean的创建、配置、管理
- 1、Beans:
- 2、Core
- 3、Context
- 4、Expression
- 5、Context support
6、测试