Spring IOC&DI

1. spring概述

1.1 Spring是什么(理解)

Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核。spring

提供了展示层 SpringMVC和持久层 Spring JDBCTemplate以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE 企业应用开源框架express

IOC AND AOP:编程

IOC:inverse of controll控制反转 将原来在代码层次实例化bean,以及管理 bean的依赖关系反转到spring容器中进行管理的过程,叫控制反转.session

DI:dependency injection 依赖注入 它是IOC的一个重要组成部分,经过spring容器管理程序中组件之间的依赖和注入。app

1.2 Spring发展历程 (了解)

Rod Johnson ( Spring 之父)框架

2017 年 9 月份发布了 Spring 的最新版本 Spring5.0 通用版(GA)ide

1.3 Spring的优点(理解)

方便解耦,简化开发函数

AOP 编程的支持测试

声明式事务的支持spa

方便程序的测试

1.4 Spring的体系结构(了解)

 

2. spring快速入门

2.1 Spring程序开发步骤

①导入 Spring 开发的基本包坐标

②编写 Dao 接口和实现类

③建立 Spring 核心配置文件

④在 Spring 配置文件中配置 UserDaoImpl

⑤使用 Spring 的 API 得到 Bean 实例

2.2 导入Spring开发的基本包坐标

<properties>
<spring.version>5.0.5.RELEASE</spring.version>
</properties>
<!--导入spring的context坐标,context依赖core、beans、expression-->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>

2.3 编写Dao接口和实现类

public interface UserDao {
public void save();
}

public class UserDaoImpl implements UserDao {
@Override
public void save() {
System.out.println("UserDao save method running....");
}
}

2.4 建立Spring核心配置文件

在类路径下(resources)建立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">
</beans>

2.5 在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.itheima.dao.impl.UserDaoImpl"></bean>
</beans>

2.6 使用Spring的API得到Bean实例

@Test
public void test1(){
ApplicationContext applicationContext = new
ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDao) applicationContext.getBean("userDao"); userDao.save();

3. Spring配置文件

3.1 Bean标签基本配置

用于配置对象交由Spring 来建立。

默认状况下它调用的是类中的无参构造函数,若是没有无参构造函数则不能建立成功。

基本属性:

id:Bean实例在Spring容器中的惟一标识

class:Bean的全限定名称

3.2 Bean标签范围配置

scope:指对象的做用范围,取值以下:

取值范围 说明
singleton 默认值,单例的
prototype 多例的
request WEB 项目中,Spring 建立一个 Bean 的对象,将对象存入到 request 域中
session WEB 项目中,Spring 建立一个 Bean 的对象,将对象存入到 session 域中
global session WEB 项目中,应用在 Portlet 环境,若是没有 Portlet 环境那么globalSession 至关于 session


}

1)当scope的取值为singleton时

Bean的实例化个数:1个

Bean的实例化时机:当Spring核心文件被加载时,实例化配置的Bean实例

Bean的生命周期:

对象建立:当应用加载,建立容器时,对象就被建立了

对象运行:只要容器在,对象一直活着

对象销毁:当应用卸载,销毁容器时,对象就被销毁了

2)当scope的取值为prototype时

Bean的实例化个数:多个

Bean的实例化时机:当调用getBean()方法时实例化Bean

对象建立:当使用对象时,建立新的对象实例

对象运行:只要对象在使用中,就一直活着

对象销毁:当对象长时间不用时,被 Java 的垃圾回收器回收了

3.3 Bean生命周期配置

init-method:指定类中的初始化方法名称

destroy-method:指定类中销毁方法名称

3.4 Bean实例化三种方式

1) 使用无参构造方法实例化

它会根据默认无参构造方法来建立类对象,若是bean中没有默认无参构造函数,将会建立失败

<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"/>

2) 工厂静态方法实例化

工厂的静态方法返回Bean实例

public class StaticFactoryBean {
public static UserDao createUserDao(){
return new UserDaoImpl();
}
}

<bean id="userDao" class="com.itheima.factory.StaticFactoryBean"

3) 工厂实例方法实例化

工厂的非静态方法返回Bean实例

public class DynamicFactoryBean {
public UserDao createUserDao(){
return new UserDaoImpl();
}
}

<bean id="factoryBean" class="com.itheima.factory.DynamicFactoryBean"/>
<bean id="userDao" factory-bean="factoryBean" factory-method="createUserDao"/>

3.5 Bean的依赖注入入门

①建立 UserService,UserService 内部在调用 UserDao的save() 方法

public class UserServiceImpl implements UserService {
@Override
public void save() {
        ApplicationContext applicationContext = new
                ClassPathXmlApplicationContext("applicationContext.xml");                 UserDao userDao = (UserDao) applicationContext.getBean("userDao");
         userDao.save();
}
}

②将 UserServiceImpl 的建立权交给 Spring

相关文章
相关标签/搜索