- IOC
- DI
- AOP
- 特点
- 容器, 也容纳管理了第三方框架 # 目的是解耦框架api
- 轻量级,模块化,无(少)侵入
- 模块
- dao, orm, aop, jee, web, core
- 结构
- 核心容器(core container)
- Core # 最底层,资源访问,类型转换
- Beans # IOC, DI, BeanFactory
- Context # 以Core、Beans为基础,ApplicationContext。资源绑定,数据验证,国际化,JavaEE支持,容器生命周期,事件传播
- EL # 表达式语言
- AOP, Aspects # Aspects对AspectsJ集成, 功能多于spring asp
- 数据访问/集成
- JDBC
- ORM
- OXM # object xml 映射
- JMS # 消息与异步通信
- 事务
- Web/Remoting
- Web # ioc窗口,rmi, hessian,burlap, web service
- Web-Servlet
- Web-Struts
- Web-Porlet # portal认证
- Test
- 设计模式
- 代理
- 目标对象实现接口,使用Proxy
- 未实现接口,使用CGLIB
- 单例
- 模板, 解决代码重复问题
- RestTemplate, JmsTemplate, JpaTemplate
- 控制器
- 视图帮助(view helper)
- 依赖注入
- BeanFactory, ApplicationContext核心理念
- 工厂
- 循环依赖问题
- 构造器, 正在创建在Bean池标记,创建完删除标记,标记冲突报错 # 所以用@Autowired决定注入时机,不写在构造方法里
- 单例, 三级缓存, 提前暴露使双方都可初始化
- setter, 提前暴露bean
- 版本
- 使用
- jar包 :
- 核心包:/dist/modules # 或是/dist中的spring.jar包
- core模块
- beans
- context
- context-support
- core
- 日志包:/lib/jakata-commons/commons-logging.jar
- 创建xml文件(最好在JavaBean的旁边)
- 绑定约束文件 /dist/resources/spring-beans-2.5.xsd
- copy xml文件的头:/sample/petclinic/war/web-inf/app…xml
- 创建JavaBean.java
- xml文件中配置bean # src下
- <bean id="" class=""> # id值唯一,class指定 javaBean的类目录 - <property name="" value=""> - <property name="" ref=“girlID”> # 引用类型,其中girlID为spring配置的bean Id - 业务类中
- ApplicationContext ac = new ClassPathXmlApplicationContext(new String [] {“配置xml文件路径”})
- 注意:ac创建时,其内部的JavaBean默认全部实例化一遍,并且全部注入了属性
- 该容器不用关闭
- if(ac.containsBean(“boyID”)){
- Boy boy = (Boy)ac.getBean(“boyID”);
- }
- API
- ApplicationContext是一个接口,表示spring容器/ioc容器
- ClassPathXmlApplicationContext # 只从类路径中读取xml配置文件(src/目录下能访问的路径)省略src/目录
- FileSystemXmlApplicationContext # 文件路径 ,从src/开始
- ac.getBean(“boyID”)
- ac.containsBean(“boyID”) # 通过此方法去判断是否存在 ,而不是得到的是否为null
- ac.destroy() # ac中的bean实例全部销毁
- BeanFactory
- 基础IOC容器, 默认延迟初始化
- DefaultListableBeanFactory
- ApplicationContext
- XmlBeanFactory # 根据xml中的定义加载bean
- Spring-DAO # 提供规范, 翻译框架(JDBC<Hibernate,JPA等)异常为DataAccessException
- Spring-JDBC # 模板类
- DataSource
- JdbcTemplate
- JdbcDaoSupport # 对dao扩展, DataAccessExceptions异常翻译器
- Spring-ORM # 统称,对各模块(JPA,JDO,Hibernate,iBatis,TopLink,OJB)实现了spring的集成类
- 把DataSource注入到SessionFactory或EntityManagerFactory等bean中 # jdbc不需要,因为jdbc直接使用DataSource
- HibernateTemplate
- HibernateDAOSupport # 继承它提供aop拦截器
- Web
- 在ApplicationContext基础上, 提供web上下文和面向web的服务
- ApplicationContext # 以BeanFactory为基础,容器启动后默认全部初始化绑定
- FileSystemXmlApplicationContext # 指定文件
- ClassPathXmlApplicationContext # 从classpath找设置
- WebXmlApplicationContext
- 注解
- applicationContext.xml
- <context:annotation-config/> - <!— 添加注解扫描功能,启动的时候哪些包要检查是否有注解 ⇒ - <context:component-scan base-package=“xxx” /> - @Required
- setter
- @Autowired
- @Qualifier(“dataSource)
- @Bean
- @Configuration
- @Service
- 添加类名小写的spring bean id 也可以@Service(value=“xx”)自定义id
- action类前换成@Controller @Service也是可以的
- @Scope(value=“prototype”)
- 工具类或其它组件类换成@Component 也可以@Service,如定时器TimerTask就是组件
- @Resource
- 测试类
- @RunWith(SpringJUnit4ClassRunner.class)
- @ContextConfiguration(locations = “classpath:applicationContext*.xml”)
- @PostConstruct
- 类加载时运行的方法,相当于xml中配置的init-method
- @PreDestroy
- Spring组件
- Spring Boot
- Spring Integration