学习目标:

本篇文章将会带领大家学习到一些关于spring快速入门的技巧,通过学习,可以达到了解spring到底是干嘛的,如何进行spring程序的编写。

  • 适宜人群:

    • 刚刚学习完javaweb/jsp的小伙伴
    • 对maven有一定的了解

在学习javaweb的时候,应该所有同学都听说过框架这个名词,感觉好厉害的样子,其实就是很厉害,感觉学习肯定非常困难,其实不然。难从来都是对于造物者来说的,对于应用者,一点都不难,希望大家在学习的过程中,不要有太大的思想负担,就想的非常简单就好了。

1.spring简介

Spring框架是一个开源的J2EE应用程序框架,是针对bean的生命周期进行管理的轻量级容器。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、审判日等众多Web框架组合使用,并且可以与 Swing等桌面应用程序组合。因此, Spring不仅仅能应用于J2EE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。 在这篇文章中呢,主要介绍下spring core的简单知识。

2.spring优势

那使用spring到底有什么好处呢?下面我来介绍一下我对于spring的体会和了解,如有其他见解,请在评论区留言,集百家所长,大家互相学习嘛。

  • 解耦合

在javaweb初级阶段我们就一直听到解耦合的概念,但是没有太大的感觉,估计也就连接池和数据库工具类利用xml或者properties配置文件加载的方式解耦罢了。而spring提供了一种IOC容器,可以将对象的依赖关系交由spring来控制,也就是你不用再像之前一样new对象了,想用哪个对象直接在配置文件配置一下,用的时候取就好了,避免了硬编码。

  • 声明式编程方式

之前我们的编程方式都是编程时方式,而在spring中,大多数是声明式,那什么叫做声明式编程方式呢?其实就是用一个标记去标识相关信息,底层去对这些标识符进行解析处理。在下面呢,会有例子来直接体现。

这篇文章呢,主要讲这两个方面的优势,至于别的,我会在别的文章中发表,希望大家多提点意见,共同进步。

3.spring体系结构

这里呢,也没什么好说的,图片是网上找的,大家了解了解即可,接下来上干货。

4.spring快速入门

  • spring程序开发步骤

1. 导入spring maven坐标或者jar包,都可以,我这里使用了maven坐标

<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.14</version>
</dependency>

2. 编写dao接口和实现类

public interface UserDao {public void insert();
}public class UserDaoImpl implements UserDao {@Overridepublic void insert() {System.out.println("insert running……");}
}

3. 创建spring核心配置文件

  • 在resources下创建application Context.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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"></beans>

4. 在配置文件中配置dao的实现类

// 加入该行配置即可
<bean id="userDao" class="gyl.top.dao.impl.UserDaoImpl"></bean>

5. 使用spring API获得该对象实例

@Test
public void test1(){ApplicationContext applicationContext = newClassPathXmlApplicationContext("applicationContext.xml");UserDao userDao = (UserDao) applicationContext.getBean("userDao");userDao.insert();
}

5.spring配置文件介绍

上面我们简单的使用了bean标签,它的作用其实就是将dao的实现对象交给spring容器,不难看出,这里底层肯定使用了反射机制,通过类的全限定名去创建对象。而反射默认调用的是类的无参构造,所以如果没有无参构造函数则不能创建该对象。

基本属性:

id:bean实例在spring容器中的唯一标识

class:bean实例的全限定名

5.1bean标签的范围配置

scope:指对象的作用范围

1)当scope的取值为singleton时

Bean的实例化个数:1个

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

Bean的生命周期:

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

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

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

2)当scope的取值为prototype时

Bean的实例化个数:多个

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

Bean的生命周期:

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

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

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

5.2bean的声明周期配置

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

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

6.bean实例化的三种方式

  • 无参构造方法实例化

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

  • 工厂静态方法实例化

public class StaticFactoryBean {public static UserDao createUserDao(){return new UserDaoImpl();}
}
<bean id="userDao" class="gyl.top.factory.StaticFactoryBean"factory-method="createUserDao" />
  • 工厂实例方法实例化

public class DynamicFactoryBean {public UserDao createUserDao(){return new UserDaoImpl();}
}
<bean id="factoryBean" class="gyl.top.factory.DynamicFactoryBean"/>
<bean id="userDao" factory-bean="factoryBean" factory-method="createUserDao"/>

文章一般,都是自己自学所得,希望大家多多指正!

Spring-第一篇-快速入门相关推荐

  1. 如何:从Spring 4.0快速入门以构建简单的REST-Like API(演练)

    如何:从Spring 4.0快速入门以构建简单的REST-Like API(演练) 关于使用Spring MVC创建Web API的另一篇教程. 不太复杂. 只是一个演练. 生成的应用程序将提供简单的 ...

  2. Spring学习(1)——快速入门

    Spring学习(1)--快速入门 认识 Spring 框架 Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of Co ...

  3. Spring Boot的快速入门

    Spring Boot的快速入门 1.导入第一个maven项目 自动生成maven项目 2.了解maven项目结构 3.启动服务 和普通maven项目结构是一样的,值得注意的是,启动服务的入口是 ![ ...

  4. Spring MVC 4快速入门Maven原型已改进

    Spring Boot使Spring入门非常容易. 但是仍然有人对不使用Spring Boot并以更经典的方式引导应用程序感兴趣. 几年前,我创建了一个原型(早于Spring Boot),简化了引导S ...

  5. 【Nginx】第一章 快速入门

    第一章 快速入门 文章目录 第一章 快速入门 一.介绍 1.引入 2.什么是 Nginx 3.Nginx 作用 二.Windows 下使用 1.启动 Nginx 2.配置监听 3.关闭 nginx 三 ...

  6. 【MyBatis-Plus】第一章 快速入门

    第一章 快速入门 文章目录 第一章 快速入门 一.介绍 1.概述 2.特性 二.入门案例 1.安装插件 2.准备工作 3.MyBatis-Puls 替换 MyBatis 4.修改 StudentDao ...

  7. 【MyBatis】第一章 快速入门

    第一章 快速入门 文章目录 第一章 快速入门 一.介绍 1.使用 JDBC 的缺陷 2.MyBatis 框架解决的主要问题 二.入门案例 1.准备数据库 2.创建实体类 3.创建持久层 DAO 接口 ...

  8. Electron系列教程——第一篇:入门

    Electron系列教程--第一篇:入门 一.楔子 想要学习Electron,跟着官网或者中文网,仔细阅读,并实践,其实是够了,不必要重复.那为什么还要写这个系列呢?大概有两方面原因,其一:我使用el ...

  9. vue 单相绑定_Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)...

    Vuejs第一篇之入门教程详解(单向绑定.双向绑定.列表渲染.响应函数) 2018-12-30 什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素 ...

  10. Shiro第四篇【Shiro与Spring整合、快速入门、Shiro过滤器、登陆认证】

    Spring与Shiro整合 导入jar包 shiro-web的jar. shiro-spring的jar shiro-code的jar 快速入门 shiro也通过filter进行拦截.filter拦 ...

最新文章

  1. Java与JS代码调试技巧
  2. stm32之USART学习
  3. 谱减法降噪的matlab代码实现
  4. python excelwriter保存路径_python管理文件神器 os.walk
  5. 微软官方windows phone开发视频教程第二天视频(附下载地址)
  6. .net mvc 超过了最大请求长度 限制文件上传大小
  7. spring aop示例_Spring查找方法示例
  8. 怎样管理计算机制动开关时间,3分钟让你明白按钮启动如何工作的。
  9. 波士顿大学研究生计算机科学专业排名,2020年波士顿大学排名TFE Times美国最佳计算机科学硕士专业排名第52...
  10. python矩阵所有元素取整_Python中如何对一个数值进行取整操作呢?
  11. Linux_Shell符号及各种解释对照表
  12. 登录权限验证token
  13. 高通平台开发系列讲解(工具篇)ramdump获取与解析
  14. dell5580bios恢复出厂_戴尔笔记本bios如何恢复出厂设置
  15. 《大数据时代》读后感
  16. 易支付源码php,「独家修复」2020最新版易支付源码-PHP运营级易支付源码已去后门...
  17. ram与flash你知道多少?
  18. Android系统应用---SystemUI之三:状态栏电池图标的显示和Android电池管理的探讨
  19. 网页怎么显示emoji表情
  20. ReentrantLock 锁详解

热门文章

  1. Linux搭建Web网站
  2. PDF转换成html的完美方法
  3. UnderStand的使用说明
  4. plc控制柜图纸怎么看呢?
  5. PMP考试计算专题——网络图
  6. C# PDF转为图片的方法
  7. DOS下对系统重新进行分区
  8. 解决【VS/VC】中文乱码问题-5种解决办法
  9. 《树上的男爵》坚持解释不清的理想是疏离,还是自由?
  10. 什么是DCMM认证?什么是数据管理能力成熟度评估?