一、Spring的简介概述
Spring是什么:
Spring是分层的Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核。提供了展现层SpringMVC和持久层Spring JDBCTemplate以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE企业应用开源框架。
Spring所具有的优势:
1.方便解耦,简化开发 2.AOP 编程的支持 3.声明式事务的支持 4.方便程序的测试
Spring的功能:
IOC:控制反转,其实就是把对象的创建权,交给spring,由Spring负责给我们创建对象。
DI: 依赖注入,其实就是给对象的成员变量赋值。
AOP:面向切面编程,底层就是动态代理。
事务: Spring提供了声明式事务,也就是说,我们可以通过配置的方式来添加事务。
Spring的结构:
二、Spring的快速入门
Spring的开发步骤:
1.导入Spring基本包坐标
因为创建的是Maven模块,所以在pom里直接输入以下代码就可以了。
1 <properties> 2 <spring.version>5.0.5.RELEASE</spring.version> 3 </properties> 4 <!--导入spring的context坐标,context依赖core、beans、expression--> 5 <dependencies> 6 <dependency> 7 <groupId>org.springframework</groupId> 8 <artifactId>spring-context</artifactId> 9 <version>${spring.version}</version> 10 </dependency> 11 </dependencies>
2.创建完成功能的接口和实现类
创建Dao层编写接口UserDao和实现类UserDaoImpl
1 public interface UserDao { 2 public void save(); 3 } 4 5 public class UserDaoImpl implements UserDao { 6 @Override 7 public void save() { 8 System.out.println("UserDao save method running...."); 9 } 10 }
3.创建Spring的核心配置文件applicationContext
在类路径下(resources)创建applicationContext.xml配置文件
1 <beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://www.springframework.org/schema/beans 4 http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 6 <!-- 配置UserDaoImpl --> 7 <bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"></bean> 8 9 </beans>
4.使用Spring的API获取Bean对象调用方法
创建个Test类测试
1 @Test 2 public void test1(){ 3 //加载spring配置文件。获取spring核心容器 4 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); 5 //获取spring容器中的userDao对象 6 UserDao userDao = (UserDao) ac.getBean("userDao"); 7 //调用方法 8 userDao.save(); 9 }
三、Spring入门的知识点小结
applicationContext.xml核心配置文件中的Bean标签的配置:
<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl" scope="singleton"></bean>
id:唯一性标识,在同一个配置文件中不可重复
class:bean的全限定名称,指向你编写的功能实现类
scope:指对象的作用范围:
取值范围 | 说明 |
---|---|
==singleton== | 默认值,单例的,立即加载 |
==prototype== | 多例的,延迟加载 |
request | WEB项目中,Spring创建一个Bean的对象,将对象存入到request域中 |
session | WEB项目中,Spring创建一个Bean的对象,将对象存入到session域中 |
global session | WEB项目中,应用在Portlet环境,如果没有Portlet环境那么globalSession相当于session |
init-method:指定类中的初始化方法名称,当对象被创建时,调用该方法。
destroy-method:指定类中销毁方法名称,当对象被销毁时,调用该方法。
Bean实例化的三种方式:
1*.使用无参构造方法实例化:
默认调用无参构造方法创建对象,如果bean中没有默认无参构造函数,将会创建失败,因为在实现类中默认拥有无参构造方法,所以在核心配置文件中直接配置bean就可以使用,以上的编写方式就是该种实例化方式。
2.工厂静态方法实例化:
新创建个工厂类
1 //工厂类 2 public class StaticFactoryBean { 3 //静态方法,通过该方法获取对象 4 public static UserDao createUserDao(){ 5 return new UserDaoImpl(); 6 } 7 }
在applicationContext中
1 <!-- 调用StaticFactoryBean类的静态方法createUserDao获取对象 --> 2 <bean id="userDao" class="com.itheima.factory.StaticFactoryBean" factory-method="createUserDao" />
然后在test中获取该id调用工厂类便可实现
3.工厂实例方法实例化:
1 //工厂类 2 public class DynamicFactoryBean { 3 //非静态方法,需要先创建工厂类的对象,再通过对象调用该方法,获取对象 4 public UserDao createUserDao(){ 5 return new UserDaoImpl(); 6 } 7 }
1 <!-- 创建工厂类的对象 --> 2 <bean id="factoryBean" class="com.itheima.factory.DynamicFactoryBean"/> 3 <!-- 通过工厂类的对象,调用createUserDao方法,获取UserDao对象 --> 4 <bean id="userDao" factory-bean="factoryBean" factory-method="createUserDao"/>
在Test类里关于Spring的API:
1.ApplicationContext的继承体系:
applicationContext:接口类型,代表应用上下文,可以通过其实例获得 Spring 容器中的 Bean 对象
2.ApplicationContext的实现类:
1)ClassPathXmlApplicationContext 它是从类的根路径下加载配置文件 推荐使用这种。
2)FileSystemXmlApplicationContext它是从磁盘路径上加载配置文件,配置文件可以在磁盘的任意位置。
3)AnnotationConfigApplicationContext 当使用注解配置容器对象时,需要使用此类来创建 spring 容器。它用来读取注解。
3.getbean的使用方法:
1 //获取id="userService"的对象 2 UserService us1 = (UserService)ac.getBean("userService"); 3 //获取类型为"UserService"的对象, 4 //注意,该操作要求,在spring核心容器中只能有一个"UserService"类型的对象 5 UserService us2 = ac.getBean(UserService.class); 6 //获取类型为"UserService",id为"userService"的对象, 7 UserService us3 = ac.getBean("userService",UserService.class);