Spring框架(1)--只是入门

时间:2019-12-12
本文章向大家介绍Spring框架(1)--只是入门,主要包括Spring框架(1)--只是入门使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一、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);

原文地址:https://www.cnblogs.com/j9527/p/12030293.html