一、Spring回顾
Spring简介
1、Spring是轻量级的开源的JavaEE框架
JavaEE就是用java开发企业级的应用,它是一个规范和标准
Spring框架就是实现了JavaEE这个规范,所以Spring常用来开发企业级的应用
2、Spring可以解决企业应用开发的复杂性
3、Spring有两个核心部分:IOC和Aop
Spring架构
IOC
IOC(Inversion of Control):控制反转,把创建对象过程交给Spring进行管理
在一个软件系统中,对象A依赖于对象B,当对象A需要对象B的时候需要自己创建对象B,这个创建对象的控制权是掌握在对象A手中的。在引入IOC容器之后,当对象A在需要对象B的时候,由IOC容器主动创建并注入A中,从而实现了解耦。这个过程创建对象的控制权全部交给了IOC容器,这就是控制反转
DI
依赖注入
依赖注入是IOC的实现方式,前面我们说ioc是控制反转,它这个反转其实就是获得依赖对象的过程被反转了。依赖注入就是IOC在运行期间,动态地将依赖关系注入到对象之中
依赖注入(DI)和控制反转(IOC)是从不同的角度的描述的同一件事情
二、未使用Spring程序开发步骤
com.itheima.dao.UserDaoImpl create 方法; delete 方法; update 方法; select 方法; com.itheima.service.UserServiceImpl //通过 new 一个 UserDaoImpl 对象来使用 UserDao userDao = new UserDaoImpl();
在业务层调用持久层的方法时,需要先new持久层的对象,然后调用持久层方法进而操作数据库。1`1
未使用Spring之前都是需要什么对象就new什么对象,这样也能做,不足点是耦合性太强。
怎么解耦呢?
应天命而产生。 现指适应时机而产生
Spring框架就应运而生就出来了,它可以让对象都在一个容器里,需要的时候直接通过spring的api从容器中获取
Spring框架是怎么让对象都在容器里的呢?
学习过Spring框架后,被放在容器里的对象就成为bean
前面的学习是通过配置文件的形式以
<bean>
标签来把对象放到容器里
是通过xml配置文件的形式用特殊的标签,指定对象的全类名和id(id是用来唯一标识的),Spring框架通过id获取Bean的全类名,之后通过java中的反射机制创建对象
三、使用Spring程序开发步骤
- 通过maven导Spring相关的包
- 编写dao接口和实现类
- 创建Spring核心配置文件
- 在spring配置文件中配置UserDaoImpl
- 使用Spring的API获得Bean实例
1、通过maven导Spring相关的包
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.heima</groupId> <artifactId>spring_ioc</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.5.RELEASE</version> </dependency> </dependencies> </project>
2、编写dao接口和实现类
public interface UserDao { void save(); }
实现类
package com.heima.impl; import com.heima.UserDao; public class UserDaoImpl implements UserDao { @Override public void save() { System.out.println("save running......."); } }
3、创建Spring核心配置文件
4、在spring配置文件中配置UserDaoImpl
<?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"> <bean id="userDao" class="com.heima.impl.UserDaoImpl"> </bean> </beans>
5、使用Spring的API获得Bean实例
这里new的ClassPathXmlApplicationContext其实就相当于spring的客户端对吧,
之后通过spring客户端api获取配置文件中的对象,从而调用方法
package com.heima.demo; import com.heima.UserDao; import org.springframework.context.support.ClassPathXmlApplicationContext; public class UserDaoDemo { public static void main(String[] args) { ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("application.xml"); UserDao userDao = (UserDao) app.getBean("userDao"); userDao.save(); } }