1、Spring框架简介

Spring是一个开源框架,Spring是在2003年兴起的一个轻量级的开源框架,由Rod johnson创建。主要对JavaBean的生命周期进行管理的轻量级框架,Spring给JavaEE带来了春天。

2、Spring框架特点

轻量级:不是说他的文件大小很小,指的Spring是非侵入性。
  知识点:轻量级框架和重量级框架的区别
      轻量级和重量级的框架是以启动程序所需要的资源所决定,比如EJB在启动程序的时候需要消耗大量的资源,内存和CPU,所以是重量级。
依赖注入:IOC(DI)和面向切面编程:AOP
容器:Spring是一个容器,因为它包含并且管理应用对象的生命周期
框架:Spring实现了使用简单的组件配置组合成一个复杂的应用。
一站式:在IOC和AOP的基础上可以整合各种企业应用的开源框架和优秀的第三方类库

3、Spring架构

Test:Spring支持Junit单元测试
Core Container(核心容器):里面能看到有4个核心的内容,也就是如果需要使用Spring,这4个jar包是绝对不能少的。
  ① spring-beans-4.3.6.RELEASE.jar (Beans):Bean工厂,创建对象
  ② spring-core-4.3.6.RELEASE.jar (Core):核心的基础
  ③ spring-context-4.3.6.RELEASE.jar(Context):上下文ApplicationContext
  ④ spring-expression-4.3.6.RELEASE.jar(SpEL:Spring的EL表达式)
  知识点:还有一个jar包也是必须的,因为Spring使用了它
  ⑤ commons-logging-1.2.jar
AOP:面向切面编程
Transactions:声明式事务
ORM、JDBC:可以整合hibernate和mybatis
Web、Servlet:可以整合Stucus2和Spring MVC

4、创建一个HelloWorld项目(博客园最纯净、最简单版本)

下载spring的jar包:http://repo.spring.io/release/org/springframework/spring

为了更好的理解Spring的jar包依赖,我们不用maven创建。我们也不用web.xml文件来初始化加载spring容器,完全原始打造。主要目的就是为了理解一下最纯净最简单的spring项目是什么样子的。

①、首先创建引入jar包,上面5个jar包进入即可 

看到了吗?5个jar就可以创建了。是创建helloworld的最小基本单元了。再少就不能运行了。

②、创建一个HelloWorld.class

 public class HelloWorld {
private String name;
public void setName(String name) {
System.out.println("调用了设置属性");
this.name = name;
}
public HelloWorld(){
System.out.println("初始化构造器");
}
public void hello(){
System.out.println("Hello: " + name);
}
}

③ 创建一个Spring的配置文件applicationContext.xml

 <bean id="helloworld" class="HelloWorld">
<property name="name" value="Spring"></property>
</bean>

④ 创建一个Main.class(主函数入口)

 public static void main(String[] args) {
//1、创建Spring的IOC容器的对象
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//2、从IOC的容器中获取Bean的实例
HelloWorld helloWorld = (HelloWorld) ctx.getBean("helloworld");
//3、调用hello方法
helloWorld.hello();
}

输出结果:
  初始化构造器
  调用了设置属性
  Hello: Spring

思考一下,如果上面main里的方法我把获取Bean的实例和调用hello方法的都注释掉(即把2和3的全注释掉),那么结果应该是什么?
输出结果:
  初始化构造器
  调用了设置属性

 说明了在创建SpringIOC容器的时候,就已经对类进行了实例化并对属性进行了赋值

---------------------------------------------------------------------------------

跟着刚哥学习Spring框架系列:

跟着刚哥学习Spring框架--创建HelloWorld项目(一)

跟着刚哥学习Spring框架--Spring容器(二)

跟着刚哥学习Spring框架--通过XML方式配置Bean(三)

跟着刚哥学习Spring框架--通过注解方式配置Bean(四)

跟着刚哥学习Spring框架--AOP(五)

跟着刚哥学习Spring框架--JDBC(六)

跟着刚哥学习Spring框架--事务配置(七)

跟着刚哥学习Spring框架--创建HelloWorld项目(一)的更多相关文章

  1. 跟着刚哥学习Spring框架--AOP(五)

    AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善.OOP引入 ...

  2. 跟着刚哥学习Spring框架--通过注解方式配置Bean(四)

    组件扫描:Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 特定组件包括: 1.@Component:基本注解,识别一个受Spring管理的组件 2.@Resposit ...

  3. 跟着刚哥学习Spring框架--通过XML方式配置Bean(三)

    Spring配置Bean有两种形式(XML和注解) 今天我们学习通过XML方式配置Bean 1. Bean的配置方式 通过全类名(反射)的方式   √ id:标识容器中的bean.id唯一. √ cl ...

  4. 跟着刚哥学习Spring框架--Spring容器(二)

    Spring容器 启动Spring容器(实例化容器) -- IOC容器读取Bean配置创建Bean实例之前,必须对它进行实例化(加载启动),这样才可以从容器中获取Bean的实例并使用.  Bean是S ...

  5. 跟着刚哥学习Spring框架--事务配置(七)

    事务 事务用来保证数据的完整性和一致性. 事务应该具有4个属性:原子性.一致性.隔离性.持久性.这四个属性通常称为ACID特性.1.原子性(atomicity).一个事务是一个不可分割的工作单位,事务 ...

  6. 跟着刚哥学习Spring框架--JDBC(六)

    Spring的JDBC框架 Spring JDBC提供了一套JDBC抽象框架,用于简化JDBC开发. Spring主要提供JDBC模板方式.关系数据库对象化方式.SimpleJdbc方式.事务管理来简 ...

  7. 深入浅出学习Spring框架(四):IoC和AOP的应用——事务配置

    在前文 深入浅出学习Spring框架(一):通过Demo阐述IoC和DI的优势所在. 深入浅出学习Spring框架(三):AOP 详解 分别介绍了Spring的核心功能——IoC和AOP,光讲知识远远 ...

  8. 学习Spring框架等技术的方向、方法和动机

    学习Spring框架最早学习Spring框架是在大二的时候,当时看了几本书,看了一些视频,主要是传智播客的.更多的,还是写代码,单独写Spring的,也有与Struts和Hibernate等框架整合的 ...

  9. (转)Android Studio系列教程一下载与安装 背景Android Studio VS Eclipse准备下载创建HelloWorld项目

    背景 相信大家对Android Studio已经不陌生了,Android Studio是Google于2013 I/O大会针对Android开发推出的新的开发工具,目前很多开源项目都已经在采用,Goo ...

随机推荐

  1. 谈谈在DevOps实践中,感觉最重要的这三个技术……

    从国内众多DevOps实践中,我们能看到下面三个技术尤其重要和火热: 容器:容器从根本上解决了软件对环境的依懒性,解决了各个环境之间的差异问题:它可以加速部署的速度,提高部署的效率:降低部署的成本.容 ...

  2. vue的使用总结

    1.vue的生命周期

  3. MongoDB基础教程系列--第一篇 进入MongoDB世界

    1.什么是MongoDB MongoDB是跨平台的.一个基于分布式文件存储的数据库.由C++语言编写.用它创建的数据库具备性能高.可用性强.易于扩展等特点.MongoDB将数据存储为一个文档,数据结构 ...

  4. 第5章Zabbix自动化监控

    p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; t ...

  5. 面向对象的三大特征——封装、继承、多态(&常用关键字)

    一.封装 Encapsulation 在面向对象程式设计方法中,封装是指,一种将抽象性函式接口的实作细节部份包装.隐藏起来的方法. 封装的概念(针对服务器开发,保护内部,确保服务器不出现问题) 将类的 ...

  6. web中关于垃圾回收的一些观点

    感觉dom大神的解惑 关于引用计数法,注意引用的方向性就行.  A.addEventListner(B.func), 那么是增加了A对B的引用.如果A是不可回收的对象,比如全局的Stage,或者单例. ...

  7. 持续集成:TestNG组织如何测试用例 1

    持续集成:TestNG组织如何测试用例   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:90 ...

  8. Invalid command 'RailsBaseURI'

    官方指导 http://www.redmine.org/projects/redmine/wiki/HowTo_Install_Redmine_on_Ubuntu_step_by_step   解决使 ...

  9. Win10专业版下图片拖到PS无法打开的解决技巧

    PS这个软件是用户最常用的软件之一,其强大的图形处理能力毋庸置疑.有用户表示在Win10专业版系统中使用PS发现图片不能直接拖动到PS中打开,这个问题本身不是特别大的问题,但这一小小的毛病会打破用户习 ...

  10. 用swap函数交换两个整数

    #include<stdio.h> //头文件 main() //主函数 { void swap(int *p,int *q); //声明 int a,b; //定义两个整数 int *p ...