第1章 初识Spring的基本应用

起源:spring框架_百度百科

目录

1  Spring概述

1.1什么是Spring?

 1.2 Spring框架的优点

 1.3 Spring的体系结构

 1.4 Spring的下载及目录结构

2  Spring的核心容器

2.1  BeanFactory

1.Spring容器负责控制程序之间的关系,而不是由程序代码直接控制。

2.提供了两种核心容器:BeanFactory和ApplicationContext。

2.2  ApplicationContext

1.BeanFactory的子接口,另一种常用的Spring核心容器。

2.不仅包含了BeanFactory的所有功能,还添加了对国际化、资源访问、事件传播等方面的持。

3.由org.springframework.context.ApplicationContext接口定义。

1.通过ClassPathXmlApplicationContext创建

 创建该接口实例,通常采用两种方法,具体如下:

2.通过FileSystemXmlApplicationContext创建     

3  Spring的入门程序

4  依赖注入

4.1  依赖注入的概念

4.2  依赖注入的实现方式


Spring概述

1.1什么是Spring

        Spring是分层的JavaSE/EE full-stack 轻量级开源框架,以IoCInverse of Control 控制反转)AOPAspect Oriented Programming 面向切面编程)为内核,使用基本的JavaBean来完成以前只可能由EJB完成的工作,取代了EJB的臃肿、低效的开发模式。

        Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。

        EJB是Enterprise Java Beans技术的简称, 又被称为企业Java Beans。这种技术最早是由美国计算公司研发出来的。EJB技术的诞生标志着Java Beans的运行正式从客户端领域扩展到服务器领域。在电子商务领域运用EJB技术可以简化应用系统的开发, 这是由该技术的结构和特点所决定的

        在实际开发中,通常服务器端在采用三层体系架构,分别为表示层(Web)业务逻辑层(Service)持久层(Dao) Spring对每一层都提供了技术支持

 1.2 Spring框架的优点

Spring具有简单、可测试和松耦合等特点不仅可以用于服务器端开发,也可以应用于任何Java应用的开发中。

 1.3 Spring的体系结构

Spring框架采用分层架构,它的功能要素被分成20个模块

 注意:上图中灰色背景模块为所涉及的主要模块

1.Core Container(核心容器)

 

 

 

 2.Data Access/Integration(数据访问/集成)

 

 

 

 3.Web

 

 

 

 4.其他模块

 

 

 

 

 1.4 Spring的下载及目录结构

所需的jar包分为两个部分:Spring框架包第三方依赖包

1.Spring框架包

下载地址:https://repo.spring.io/release/org/springframework/spring/5.2.3.RELEASE/

 

 

使用xml配置方式

1、在IDEA中创建maven项目或模块

2、在pom.xml中加入spring-webmvc依赖。会把corebeanscontextexpressionaopweb等的依赖都自动加载进来。

 2.第三方依赖包

 在使用Spring开发时,除了要使用自带的JAR包外,Spring的核心容器还需要依赖commons.loggingJAR

下载地址:http://commons.apache.org/proper/commons-logging/download_logging.cgi

Spring的核心容器

2.1  BeanFactory

1.Spring容器负责控制程序之间的关系,而不是由程序代码直接控制。

2.提供了两种核心容器BeanFactoryApplicationContext

BeanFactory容器

创建BeanFactory实例时,需提供Spring所管理容器的详细配置信息通常采用XML文件形式来管理,其加载配置信息

BeanFactory beanFactory=new XmlBeanFactory(new FileSystemResource("F: /applicationContext.xml"));

这种加载方式在实际开发中并不多用,了解即可。

2.2  ApplicationContext

1.BeanFactory的子接口,另一种常用的Spring核心容器

2.不仅包含了BeanFactory的所有功能,还添加了对国际化、资源访问、事件传播等方面的特点

3.由org.springframework.context.ApplicationContext接口定义

1.通过ClassPathXmlApplicationContext创建

 创建接口实例,通常采用两种方法,具体如下

ApplicationContext applicationContext = new

ClassPathXmlApplicationContext(String configLocation);

类路径classPath中寻找指定的XML配置文件,找到并装载完成ApplicationContext的实例化工作

2.通过FileSystemXmlApplicationContext创建     

ApplicationContext applicationContext =new FileSystemXmlApplicationContext(String configLocation);

指定的文件系统路径(绝对路径)中寻找指定的XML配置文件,找到并装载完成ApplicationContext的实例化工作。这个需要具体的路径

Java项目中,通过ClassPathXmlApplicationContext类来实例化ApplicationContext容器

而在Web项目中,ApplicationContext容器的实例化工作会交由Web服务器来完成。

Web服务器实例化ApplicationContext容器时,通常会使用ContextLoaderListener来实现,需web.xml添加代码

<context-param>
<param-name>contextConfigLocation</param-name> 
<param-value>classpath:spring/applicationContext.xml</param-value>
</context-param> 
<listener>
       <listener-class>
         org.springframework.web.context.ContextLoaderListener
      </listener-class></listener>

 1.创建Spring容器后,就可以获取Spring容器中的Bean

2.Spring获取Bean的实例通常采用以下两种方法

1.Object getBean(String name);

根据容器中Beanidname来获取指定的Bean,获取之后需要进行强制类型转换

2.<T> T getBean(Class<T> requiredType);

根据类的类型来获取Bean的实例。由于此方法为泛型方法,因此在获取Bean之后不需要进行强制类型转换

Spring的入门程序

    1.在Eclipse中,创建一个名为chapter04Web项目,将Spring4个基础包以及commons-loggingJAR包复制到lib目录中,并发布到类路径下。

XML文档,内容可从参考手册上复制最新版本(1. The IoC containerspring-framework-5.2.3.RELEASE/docs/spring-framework-reference/core.html#beans-factory-metadata

     2.src目录下,创建一个com.itheima.ioc包,并在包中创建接口UserDao,代码如下:

package com.itheima.ioc;

public interface UserDao {public void say();}

    3.在com.itheima.ioc包下,创建UserDao接口的实现类UserDaoImpl代码如下:

package com.itheima.ioc;

public class UserDaoImpl implements UserDao {

public void say() {

System.out.println("userDao say hello World !");

}}

      4.src目录下,创建SpringapplicationContext.xml配置文件并在配置文件中创建一个iduserDaoBean

<?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        https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 将指定类配置给Spring,让Spring创建其对象的实例 -->
<bean id="userDao" class="com.itheima.ioc.UserDaoImpl"/>
</beans>

      5.com.itheima.ioc包下,创建测试类TestIoC,其代码:

package com.itheima.ioc;
import org.springframework.context.ApplicationContext;
import  org.springframework.context.support.ClassPathXmlApplicationContext;
    public class TestIoC {
    public static void main(String[] args) { 
    //初始化Spring容器,并加载配置文件
       ApplicationContext applicationContext = new  ClassPathXmlApplicationContext("applicationContext.xml"); 
     //通过Spring容器获取userDao实例(即Java对象),
         UserDao userDao = (UserDao)       
         applicationContext.getBean("userDao");
     //调用实例中的say()方法
         userDao.say();
    }
}

依赖注入

4.1  依赖注入的概念

DI(Dependency Injection依赖注入)它与控制反转(IoC)含义相同,只是它们从两个角度描述的同一个概念

IoC(控制反转):Spring框架,对象的实例不再由调用者来创建,而是由Spring容器来创建程序之间的关系Spring容器控制,而不是调用者的程序代码。这样,控制权由应用代码转移到了Spring容器控制权发生了反转

DI(依赖注入):Spring容器的角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量,这相当于为调用者注入了它依赖的实例,这就是Spring的依赖注入

4.2  依赖注入的实现方式

1.使用setter方法实现依赖注入

 1.com.itheima.ioc包中,创建接口UserService,在接口中编写一个say()方法

package com.itheima.ioc;
public interface UserService {
public void say();
}

      2.在com.itheima.ioc包中,创建UserService接口的实现类UserServiceImpl,在类中声明userDao属性及setter方法。

package com.itheima.ioc;
public class UserServiceImpl implements UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void say() {
this.userDao.say();
System.out.println("userService say hello World !");
}
}

      3.在配置文件applicationContext.xml中,创建一个iduserServiceBean,该Bean用于实例化UserServiceImpl类的信息,并将userDao的实例注入到userService中。

<!--添加一个id为userService的实例 -->
<bean id="userService" class="com.itheima.ioc.UserServiceImpl">
<!--将id为userDao的Bean实例注入到userService实例中-->
   <property name="userDao" ref="userDao" />
</bean>

       4.在com.itheima.ioc包中,创建测试类TestDI,来对程序进行测试。

 package com.itheima.ioc;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 public class TestDI {
     public static void main(String[] args){ 
        ApplicationContext applicationContext = new    
               ClassPathXmlApplicationContext("applicationContext.xml"); 
        UserService userService=(UserService)    
               applicationContext.getBean("userService"); 
	  userService.say();
	}
 }

      5.执行程序后,控制台的输出结果如图所示

 小结:

本讲主要介绍了Spring框架入门的一些基础知识,包括Spring的概念、优点、体系结构、核心容器、依赖注入,同时通过一个入门程序讲解了Spring的基本使用。

      通过本讲的学习,同学们可以Spring框架及其体系结构有一个初步的了解,能够初步的掌握Spring框架的使用,并能够理Spring框架中IoCDI的思想,掌握属性setter方法注入的实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pig Pig Cat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值