1.Spring基础
1.1什么是Spring
Spring框架是一个开放源代码的J2EE应用程序框架,由[Rod Johnson](https://baike.baidu.com/item/Rod Johnson/1423612)发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。因此, Spring不仅仅能应用于J2EE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。
1.2Spring的基础包
整个Spring框架有很多jar包,我这里就拿4个Spring的基础包出来说明一下,正好对应了Spring核心容器的4个模块。
包名 | 说明 |
---|---|
spring-core-5.2.3.RELEASE.jar | 包含Spring框架基本的核心工具类,Spring其它组件都要用到这个包里的类 |
spring-beans-5.2.3.RELEASE.jar | 所有应用都要用到的jar包,包含访问配置文件、创建和管理Bean已经进行IoC和DI操作相关的所有类 |
spring-context-5.2.3.RELEASE.jar | Spring提供了在基础IoC功能上的扩展服务,还提供了许多企业级服务的支持,如任务调度、JNDI定位、缓存、邮件服务等以及各种视图层框架的封装等 |
spring-expression-5.2.3.RELEASE.jar | 定义了Spring的表达式语言 |
1.3控制反转(IoC)与依赖注入(DI)
1.3.1控制反转(IoC)
- 比如现在有普通类,在这个类里面有普通的方法,调用这个类里面的普通的方法,需要创建类对象,使用对象调用方法;
- 创建类的对象,使用原始方式new对象。使用ioc实现对象创建,不需要手动new对象,通过配置文件方式创建对象;
- 把对象创建交给spring配置。
1.3.2依赖注入(DI)
- 依赖 : 指Bean对象的创建依赖于容器 . Bean对象的依赖资源;
- 注入 : 指Bean对象所依赖的资源 , 由容器来设置和装配
把有依赖关系的类放到容器中,解析出这些类的实例,就是依赖注入。目的是实现类的解耦。
1.4创建一个Spring项目
1.4.1工具
- idea
1.4.2创建项目
- File -> New -> project…
- Java -> Next
- Next
- 修改名称,然后点击next
- 右键单击项目,出现下图所示,点击Add Framework Support…
- 勾选Web Application(4.0),在点击ok
- 完成上面的操作后,可以看到现在项目结构如下:
- 右键单击WEB-INF,new -> Directory 创建一个lib文件夹存放spring的jar包
- 输入lib
-
把用到的Spring基础包复制放到lib里面
- File -> Project Structure
- 下面步骤就不细说了,你们对比一下我的截图看看,有区别的就修改一下,有问题就在评论区反馈一下,我会及时回答的
- 点击Java
- 选择咱们这个项目我们建的lib包
- 点击右下角的Fix
- 右键单击src,在src目录下创建com.system.spring包
- 在创建这些包,参考下图
- 在dao目录下创建UserDao.java
-
代码如下
package com.system.spring.dao; public interface UserDao { /** * 定义一个login()方法 */ public void login(); }
-
在impl目录下创建UserDaoImpl.java
package com.system.spring.impl; import com.system.spring.dao.UserDao; public class UserDaoImpl implements UserDao { /** * 实现login()方法 */ @Override public void login() { System.out.println("UserDao -> login()"); } }
-
在WEB-INF目录下创建一个spring包
-
在spring目录下面创建:applicationContext.xml
<?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"> <!-- 将指定类配置给Spring,让Spring创建其对象的实例--> <bean id="userDao" class="com.system.spring.impl.UserDaoImpl" /> </beans>
- 右键单击spring,给spring目录设置成资源目录**(重要)**
-
在ioc_di目录下创建IoC.java
package com.system.spring.ioc_di; import com.system.spring.dao.UserDao; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class IoC { public static void main(String[] args) { // 1.初始化Spring容器,加载配置文件 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); // 2.通过容器获取userDao实例 UserDao userDao = (UserDao) applicationContext.getBean("userDao"); // 3.调用实例中的login()方法 userDao.login(); } }
1.4.3运行项目
点击下图所指的图标,即可成功运行项目。
成功运行,输出结果如下图所示:
1.5总结
从上面可以看出来,控制台成功输出了 UserDao -> login() ,在IoC.java里面,咱们并没有通过new关键字来创建UserDao接口的实现类对象,而是通过spring的容器来获取的实现对象,这就是Spring IoC(控制反转)的工作机制。
1.6项目地址
码云:https://gitee.com/djyalw/spring-spring-mvc-my-batis/tree/master/01.spring