Spring详解(一)
Spring
本文参考https://www.cnblogs.com/wmyskxz/p/8820371.html
了解Spring:
Spring 的优势
- 低侵入 / 低耦合 (降低组件之间的耦合度,实现软件各层之间的解耦)
- 声明式事务管理(基于切面和惯例)
- 方便集成其他框架(如MyBatis、Hibernate)
- 降低 Java 开发难度
- Spring 框架中包括了 J2EE 三层的每一层的解决方案(一站式)
Spring 能帮我们做什么
①.Spring 能帮我们根据配置文件创建及组装对象之间的依赖关系。
②.Spring 面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安全控制。
③.Spring 能非常简单的帮我们管理数据库事务。
④.Spring 还提供了与第三方数据访问框架(如Hibernate、JPA)无缝集成,而且自己也提供了一套JDBC访问模板来方便数据库访问。
⑤.Spring 还提供与第三方Web(如Struts1/2、JSF)框架无缝集成,而且自己也提供了一套Spring MVC框架,来方便web层搭建。
⑥.Spring 能方便的与Java EE(如Java Mail、任务调度)整合,与更多技术整合(比如缓存框架)。
Spring 模块
- Data Access/Integration层包含有JDBC、ORM、OXM、JMS和Transaction模块。
- Web层包含了Web、Web-Servlet、WebSocket、Web-Porlet模块。
- AOP模块提供了一个符合AOP联盟标准的面向切面编程的实现。
- Core Container(核心容器):包含有Beans、Core、Context和SpEL模块。
- Test模块支持使用JUnit和TestNG对Spring组件进行测试。
Spring IOC(DI) 控制反转
IOC(Inversion of Control):其思想是反转资源获取的方向.
传统的资源查找方式要求组件向容器发起请求查找资源.
作为回应, 容器适时的返回资源. 而应用了 IOC 之后,
则是容器主动地将资源推送给它所管理的组件,
组件所要做的仅是选择一种合适的方式来接受资源.
这种行为也被称为查找的被动形式
Class A中用到了Class B的对象b,一般情况下,需要在A的代码中显式的new一个B的对象。 采用依赖注入技术之后,A的代码只需要定义一个私有的B对象,不需要直接new来获得这个对象,而是通过相关的容器控制程序来将B对象在外部new出来并注入到A类里的引用中 |
编写第一个Spring的程序
1、首先要导入spring必要的jar包:
2、加入配置文件
<?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"> <!--class: 具体的类 id: 标注该标签的--> <bean id="mysql" class="com.zhiyou100.zjc.serivce.MysqlDao"/> <bean id="oracle" class="com.zhiyou100.zjc.serivce.OracleDao"/> <bean id="s" class="com.zhiyou100.zjc.serivce.Serivce"> <!--name:要和定义的属性名一样 --> <property name="dao" ref="oracle"></property> </bean> </beans>
3、测试
package com.zhiyou100.zjc.serivce; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub //加载sprig配置文件 ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml"); //获取指定的类对象 Serivce s = (Serivce) ac.getBean("s"); s.show(); } }