跟着刚哥学习Spring框架--创建HelloWorld项目(一)
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项目(一)的更多相关文章
- 跟着刚哥学习Spring框架--AOP(五)
AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善.OOP引入 ...
- 跟着刚哥学习Spring框架--通过注解方式配置Bean(四)
组件扫描:Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 特定组件包括: 1.@Component:基本注解,识别一个受Spring管理的组件 2.@Resposit ...
- 跟着刚哥学习Spring框架--通过XML方式配置Bean(三)
Spring配置Bean有两种形式(XML和注解) 今天我们学习通过XML方式配置Bean 1. Bean的配置方式 通过全类名(反射)的方式 √ id:标识容器中的bean.id唯一. √ cl ...
- 跟着刚哥学习Spring框架--Spring容器(二)
Spring容器 启动Spring容器(实例化容器) -- IOC容器读取Bean配置创建Bean实例之前,必须对它进行实例化(加载启动),这样才可以从容器中获取Bean的实例并使用. Bean是S ...
- 跟着刚哥学习Spring框架--事务配置(七)
事务 事务用来保证数据的完整性和一致性. 事务应该具有4个属性:原子性.一致性.隔离性.持久性.这四个属性通常称为ACID特性.1.原子性(atomicity).一个事务是一个不可分割的工作单位,事务 ...
- 跟着刚哥学习Spring框架--JDBC(六)
Spring的JDBC框架 Spring JDBC提供了一套JDBC抽象框架,用于简化JDBC开发. Spring主要提供JDBC模板方式.关系数据库对象化方式.SimpleJdbc方式.事务管理来简 ...
- 深入浅出学习Spring框架(四):IoC和AOP的应用——事务配置
在前文 深入浅出学习Spring框架(一):通过Demo阐述IoC和DI的优势所在. 深入浅出学习Spring框架(三):AOP 详解 分别介绍了Spring的核心功能——IoC和AOP,光讲知识远远 ...
- 学习Spring框架等技术的方向、方法和动机
学习Spring框架最早学习Spring框架是在大二的时候,当时看了几本书,看了一些视频,主要是传智播客的.更多的,还是写代码,单独写Spring的,也有与Struts和Hibernate等框架整合的 ...
- (转)Android Studio系列教程一下载与安装 背景Android Studio VS Eclipse准备下载创建HelloWorld项目
背景 相信大家对Android Studio已经不陌生了,Android Studio是Google于2013 I/O大会针对Android开发推出的新的开发工具,目前很多开源项目都已经在采用,Goo ...
随机推荐
- SLF4J 的几种实际应用模式--之三:JCL-Over-SLF4J+SLF4J
我们前面已经讲过了 SLF4J 的两种用法:SLF4J+Log4J 和 SLF4J+Logback,那是在比较理想的情况下,所用组件只使用了 SLF4J 这一种统一日志框架的时候.可是 JCL 一直 ...
- php从气象局获取天气预报并保存到服务器
思路:1.打开网页时读取中国气象网的接口得到每个城市的该日json:2.解析并保存到mysql:3.客户端访问mysql得到数据集. 所包含的技巧: 进度条.flush()问题.mysql.xml.p ...
- Webstorm编译TypeScript报错
Accessors are only available when targeting ECMAscript 5 and higher. 解决办法: File Watchers 在tsc.cmd命令上 ...
- java之泛型解说
1.集合中只能装入引用数据类型,不能装入基本数据类型.如,装入int类型的数值123会自动装箱. 2.开发人员装入集合的数据类型不确定,所以它被设计成可以装入所有的Object. 3.新的问题产生,装 ...
- iOS回顾笔记(09) -- Cell的添加、删除、更新、批量操作
iOS回顾笔记(09) -- Cell的添加.删除.更新.批量操作 项目中经常有对UITableViewCell做各种操作的需求: 添加一个新的cell 删除某行cell 刷新cell上某行数据(如修 ...
- Visual Studio For MacOS .NetCore开发踩坑记
自从Visual Studio For MacOS公布以来,就开始尝试在Mac上进行net core开发.断断续续遇到了各种奇奇怪怪的问题.虽然大部分利用google查查(百度屁都查不出来),都能找 ...
- 高并发场景之RabbitMQ篇
上次我们介绍了在单机.集群下高并发场景可以选择的一些方案,传送门:高并发场景之一般解决方案 但是也发现了一些问题,比如集群下使用ConcurrentQueue或加锁都不能解决问题,后来采用Redis队 ...
- Selenium测试专项二班隆重开班
Selenium测试专项二班隆重开班 应广大测试技术人员要求,以及企业技术需求.Selenium提前一周开课了,只针对合作的每家企业提供1-2个参训名额.预计培训60人次.但报名人数却远远超出我们预期 ...
- 老李知识普及:web安全性的两大权威组织
老李知识普及:web安全性的两大权威组织 两个重要的WEB应用安全组织-WASC/OWASPWeb Application Security Consortium (WASC)a.WEB应用安全标准的 ...
- 老李分享:HTTP协议之请求和响应
老李分享:HTTP协议之请求和响应 HTTP请求头详解: GET http://www.foo.com/ HTTP/1.1 GET是请求方式,请求方式有GET/POST http://www.fo ...
