什么是Spring
Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。
- Spring:SE/EE开发的一站式框架。
- 一站式框架:有EE开发的每一层解决方案。
- WEB层 :SpringMVC
- Service层 :Spring的Bean管理,Spring声明式事务
- DAO层 :Spring的Jdbc模板,Spring的ORM模块
为什么学习Spring
什么是IOC?
- IOC: Inversion of Control(控制反转)。
- 控制反转:将对象的创建权反转给(交给)Spring。
下载Spring的开发包
Spring官网:http://spring.io/
解压压缩包
下载完之后解压压缩包
- docs :Spring的开发规范和API
- libs :Spring的开发的jar和源码
- schema :Spring的配置文件的约束
创建一个web项目,引入jar包
创建接口和实现类(普通的方式)
public interface UserDAO{
public void save();
}
public class UserDAOImpl implements UserDao{
public void save(){
System.out.println("UserDaoImpl执行了");
}
}
问题:如果底层的实现切换了,需要修改源代码,能不能不修改程序源代码对程序进行扩展?
将实现类交给Spring管理
在spring的解压路径下spring-framework-4.2.4.RELEASE\docs\spring-framework-reference\html\xsd-configuration.html,然后在web项目下的src创建一个名为applicationContext.xml(名字可随意取)的xml文件,如下
方便对比,放一个servlet的xml配置
<servlet>
<servlet-name>类名</servlet-name>
<servlet-class>路径</servlet-class>
</servlet>
到这里大家会发现这里面的东西跟servlet的差不多,都是有类和路径的
编写一个测试类
public void demo(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(applicationContext.xml);
UserDao userDAO = (UserDao)applicationContext.getBean("UserDao");
UserDao.save();
}
IOC和DI(*****)
- IOC:控制反转,将对象的创建权反转给了Spring。
- DI:依赖注入,前提必须有IOC的环境,Spring管理这个类的时候将类的依赖的属性注入(设置)进来。
- 面向对象的时候
- 依赖
Class A{
}
Class B{
public void xxx(A a){
}
}
继承:is a
Class A{
}
Class B extends A{
}
聚合:has a
正在尝试写博客,把会的分享给你们,如有写的不好的地方,希望指点一下,谢谢!