注:本篇文章不在于让你了解spring的全部,而是创建一个入门的spring程序,让你有一个spring的初体验
另外呢,虽然此篇文章虽然截图较多,但是认真读绝对能让你去入门spring
Spring开发所需的jar包分为两个部分:Spring框架包和第三方依赖包。
1.Spring框架包
下载地址JFroghttps://repo.spring.io/ui/native/libs-release-local/org/springframework/spring/4.3.6.RELEASE网页打开后为
这几个包我们是分这下载的
我们一般需要这几个基础jar包,如果再需要jar包我们再继续去导入
下载完解压后,我们来了解一下这个文件夹目录下的内容
第三方jar包
在使用Spring开发时,除了要使用自带的JAR包外,Spring的核心容器还需要依赖(日志相关的jar包)commons.logging的JAR包
下载地址:http://commons.apache.org/proper/commons-logging/download_logging.cgi
在使用Spring 开发时,除了要使用自带的 JAR包外,Spring 的核心容器还需要依赖commons.logging 的JAR包。该JAR包可以通过网址“http://commons.apache.org/proper/commons-logging/download_logging.cgi”下载。下载完成后,会得到一个名为 commons-logging-1.2-bin.zit的压缩包。将压缩包解压到自定义目录后,即可找到commons-logging-1.2.jar 。
初学者学习Spring框架时,只需将Spring 的4个基础包以及 commons-logging-1.2.jar复制到项目的lib目录,并发布到类路径中即可。
了解一下spring的核心容器
Spring容器会负责控制程序之间的关系,而不是由程序代码直接控制。Spring为我们提供了两种核心容器,分别为BeanFactory和ApplicationContext
第一种BeanFactory
第二种是ApplicationContext
我们来看一下两个容器的关系
如果说BeanFactory是spring的心脏,那么ApplicationContext就是spring的身躯了。ApplicationContext由BeanFactory派生而来,提供了更多面向实际应用的的功能。还记得上节课我们提到XmlBeanFactory过期的api吗?他的代替方法就是ApplicationContext。
1、ApplicationContext是什么?
ApplicationContext,即应用上下文。ApplicationContext是spring的一个接口,它主要有两个实现类,ClassPathXmlApplicationContext和FileSystemXmlApplicationContext。
下面我们来看一下ApplicationContext的结构体系:可以看得出来,ApplicationContext接口的最终父接口是BeanFactory,而最终的实现类,正是我们刚才所说的ClassPathXmlApplicationContext和FileSystemXmlApplicationContext两个类
2、两个最终实现类有什么区别?
ClassPathXmlApplicationContext默认从类路径加载配置文件,而FileSystemXMLApplicationContext默认从文件系统中加载配置文件,其他方面没有很大区别。
import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; public class SpringTest{ public static void main(String[] args) { // ApplicationContext content = new FileSystemXmlApplicationContext("//Users/beijingduanluo/Documents/applicationContext.xml"); ApplicationContext content = new ClassPathXmlApplicationContext("applicationContext.xml"); People peo = (People) content.getBean("peo"); System.out.println(peo); } }
值得注意的是,FileSystemXmlApplicationContext的构造传参如果是字符串并且第一个字符是“/”的话,spring会自动去掉这个“/”,所以必要的时候,需要多谢个“/”,就像上面的例子。
3、应用上下文相对于BeanFactory来说,有哪些扩展?
我们分析一下ApplicationContext相对于BeanFactory多实现的这些接口:
- ApplicationEventPublisher:使容器拥有了事件的功能,包括容器启动事件、关闭事件等。
- MessageSource:为应用提供i18n国际化消息访问的功能。
- ResourcePatternResolver:这个接口让容器可以通过带前缀的ant风格的资源文件路径装载spring的配置文件,其实就是放弃了spring的Resource类,并直接在ApplicationContext构造函数传参带通配符的路径字符串。
- LifeCycle:该接口提供了start()和stop()两个方法,主要用于控制异步处理。
这些接口,是BeanFactory没有,而ApplicationContext特有的,也就意味着ApplicationContext要比BeanFactory多出这些功能。所以我们经常这么来描述BeanFactory和ApplicationContext的关系:BeanFactory面向的是程序底层,ApplicationContext面向的应用功能。
入门程序
准备工作
因为在以后的项目中有几个核心包我们是必定要导入的
所以我们把spring框架包里边的4个基础核心包为了以后导包方便,拿出来放入一个文件夹下
为了让我们的eclipse使用起来更加的方便
我们调整一下new的这个菜单
勾选你所常用的,应用即可
第一步 创建动态web项目
第二步 导入jar包,直接复制到lib目录下
放到lib目录以后并不是真正的导入,而是出现以下图片后才能算
在这导入jar包后会出现
如果没有则手动导入一下
第三步我们去写业务逻辑
定义一个UserDao的接口
实现这个接口
引入xml文件
这里边的内容怎么填呢
我们从spring框架包中找到
进入此网页
这里有个xml的样例
接下来我们补充一下自己xml文件
每个地址逗得按照ctrl键能够访问,注意 “ 分号的影响,可以给它换个行在进行访问
此时呢 会报一个没有找到某个类的错误,是因为我们光引入了spring框架包
我们还需要引入第三方依赖
这样我们的程序就可以运行了