持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情
一、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();
}
}