1、 Spring介绍 打开Spring 官网查看对 Spring 的介绍和目标 http://www.springsource.org/about We believe that: · J2EE should be easier to use · It is best to program to interfaces, rather than classes. Spring reduces the complexity cost of using interfaces to zero. · JavaBeans offer a great way of configuring applications. · OO design is more important than any implementation technology, such as J2EE. · Checked exceptions are overused in Java. A platform shouldn't force you to catch exceptions you're unlikely to be able to recover from. · Testability is essential, and a platform such as Spring should help make your code easier to test. Our philosophy is summarized in Expert One-on-One J2EE Design and Development by Rod Johnson. We aim that: · Spring should be a pleasure to use · Your application code should not depend on Spring APIs · Spring should not compete with good existing solutions, but should foster integration.(For example, JDO, Toplink, and Hibernate are great O/R mapping solutions. We don't need to develop another one.) 首先Spring 的目的是为了让 Java 的企业开发变得更简单容易,提倡面向接口编程,依赖注入,面向对象,使用 POJO 编程,使单元测试更加简单。 Spring 的目标不是具体的解决方案,而是一个平台,整合现有的很多开源框架。 2、 使用Spring 的好处 解低组件间的偶合度 面向接口编程 使用Spring 提供的其它功能,如事务管理、 JMS 、 MVC ,数据持久服务等 提供单例模式魂魄 提供AOP 支持 提供众多辅助类 提供跟其它主流框架集合支持 3、 依赖注入(Dependency Injection) 在运行期由外部容器动态的将依赖对象注入到组件中,也就是一个对象对另一个对象的引用,不在自己内部实现,而是交给第三方实现完后再注入到该对象中。 4、 重量级与轻量级概念 框架默认提供的服务多,可以理解为重理级的,提供的服务单一而简单为轻量级的 5、 搭建基于Maven 和 Spring3.0 的环境 5.1 、 新建 Maven Project 选择File -> New -> Other ,在 New 窗口中选择 Maven -> Maven Project 。点击 next ,如下图: 5.2 、 选择默认工作空间,点击 next ,选择类目类型为 maven-archetype-webapp : 5.3 、 点击 next ,填写相应的 Group ID 和 Artifact ID ,点 next ,建立好的项目结构如下: 把项目的JDK 环境改成 1.6 ,如果在此步骤出现红X ,则跳到 4.6 把 java 版本也改成 1.6 。 5.4 、 添加 Source 文件夹 添加 src/main/java , src/test/java , src/test/resources三个文件夹 ( Source Folder ) 5.5 、 更新 class 路径 右键项目属性,Java Build Path -> Source ,下面有四个文件夹: src/main/java 、 src/main/resources 、 src/test/java 、 src/test/resources : 勾上 Allow output folders for source folders , 双击每个文件夹的Output folder ,选择路径 分别为: src/main/java和 src/main/resources : target/classes Src/test/java和 src/test/resources : target/test-class 5.6 、 把项目变成 Dynamic Web 项目 5.7、 设置部署程序集 Web Deployment Assembly 如下: 6、 配置pom.xml 文件,加入 spring 依赖 com.springsource.repository.maven.release http://maven.springframework.org/release/ false 7、 创建spring 的配置文件 在src/main/resources 文件夹中创建文件 applicationContext.xml ,从 spring 文档中找到模板内容添加进去,如下:

8、 创建测试代码 8.1 、 在 src/main/java 中创建接口 com.chenzehe.spring.service.HelloWorld ,声明 sayHelloWorld() 方法,如下: package com.chenzehe.spring.service; public interface HelloWorld { void sayHelloWorld(); } 8.2 、 创建上面接口的实现类 com.chenzehe.spring.service.impl.HelloWorldImpl ,如下: package com.chenzehe.spring.service.impl; import com.chenzehe.spring.service.HelloWorld; public class HelloWorldImpl implements HelloWorld { public void sayHelloWorld(){ System.out.println("Hello World!"); } } 8.3 、 在 spring 配置文件 applicationContext.xml 文件中注册该 bean ,如:

8.4 、使用 junit 测试 在pom.xml 文件中把 junit 依赖改到 4.8.1 版本,在 src/main/test 中创建测试类 com.chenzehe.spring.test.junit.HelloWorldTest ,如下: package com.chenzehe.spring.test.junit; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.chenzehe.spring.service.HelloWorld; public class HelloWorldTest { @Test public void instanceApplicationContext() { ApplicationContext cxt = new ClassPathXmlApplicationContext( "applicationContext.xml"); HelloWorld helloWorld = (HelloWorld) cxt.getBean("helloWorld"); helloWorld.sayHelloWorld(); } } 运行该测试类输出HelloWorld

Spring 的介绍和目标的更多相关文章

  1. Spring Batch 中文参考文档 V3.0.6 - 1 Spring Batch介绍

    1 Spring Batch介绍 企业领域中许多应用系统需要采用批处理的方式在特定环境中运行业务操作任务.这种业务作业包括自动化,大量信息的复杂操作,他们不需要人工干预,并能高效运行.这些典型作业包括 ...

  2. Spring 框架介绍

    Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of Control – I ...

  3. Spring AOP介绍与使用

    Spring AOP介绍与使用 AOP:Aspect Oriented Programming 面向切面编程 OOP:Object Oriented Programming 面向对象编程 ​ 面向切面 ...

  4. [翻译]Spring框架参考文档(V4.3.3)-第二章Spring框架介绍 2.1 2.2 翻译--2.3待继续

    英文链接:http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/overview.ht ...

  5. Spring的介绍与搭建

    一.Spring的介绍 二.Spring的搭建 (1)导包 (2)创建一个对象 (3)书写配置注册对象到容器 (4)代码测试

  6. Spring Shell介绍

    最近开发中在下遇到了spring-shell开发工具的项目,现在整理了相关文章,以供大家学习 本博客相关的文章均是在Spring Shell 1.2.0的基础上建立   Spring Shell介绍 ...

  7. Spring DevTools 介绍

    Spring DevTools 介绍 Spring Boot包括一组额外的工具,可以使应用程序开发体验更加愉快. spring-boot-devtools模块可以包含在任何项目中,它可以节省大量的时间 ...

  8. 第1章—Spring之旅—Spring模块介绍

    Spring模块介绍 Spring7大核心模块: 核心容器(Spring Core) 核心容器提供Spring框架的基本功能.Spring以bean的方式组织和管理Java应用中的各个组件及其关系.S ...

  9. Spring Security 介绍与Demo

    一.Spring Security 介绍 Spring Security 是针对Spring项目的安全框架,也是Spring Boot底层安全模块的默认技术选型.我们仅需引入spring-boot-s ...

随机推荐

  1. PHP防止网页快速刷新+代理ip访问

    前几天网站收到了一些CC攻击,比较郁闷...这里分享一下,防止网页自动刷新的方法以及阻止代理IP访问网站的方法,代码是分开的,两个功能,需要那个用那个,可以自定义时间间隔,这个代码不止可以防CC攻击, ...

  2. CSS 组合选择器

    CSS 组合选择器 注:使用逗号分隔,同时应用. 多个id选择器拼接到一起 含有:i1 i2 i3的标签同时应用css样式. <html> <head> <!-- sty ...

  3. Docker Kubernetes 容器重启策略

    Docker Kubernetes 容器重启策略 当容器被创建时,容器会根据重启策略来进行容器重启. 支持三种策略: Always:当容器终止退出后,总是重启容器,默认策略. OnFailure:当容 ...

  4. Python IO内核交互了解

    注:Unix \ Linux 环境下的network IO   用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方).操作系 ...

  5. 剑指offer(28)数组中出现次数超过一半的数

    题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...

  6. vue 2.0 使用replace时要点击路由多次才能返回

    项目中有一个选择机场的需求,从表单页面--->机场页面(选择出发机场)-->表单页面-->机场页面(选择到达机场); 如果只用push跳转的话,页面返回必然会返回机场选择页面. 所以 ...

  7. Linux下设置svn开机自启动

    方式一:centos 7 设置svn开机自启动 使用新的systemctl 服务命令  (笔者成功验证过,该方式可行) [root@iZjvr37lpviqbkZ init.d]# vi /lib/s ...

  8. 正则化,L1,L2

    机器学习中在为了减小loss时可能会带来模型容量增加,即参数增加的情况,这会导致模型在训练集上表现良好,在测试集上效果不好,也就是出现了过拟合现象.为了减小这种现象带来的影响,采用正则化.正则化,在减 ...

  9. [shell] 脚本使用 【记录】

    1.nginx日志切割 vi /var/log/nginx/cut_nginx_log.sh #!/bin/bash date=$(date +%F -d -1day) cd /var/log/ngi ...

  10. [JavaScript] 设置函数同名变量为false会导致函数无法执行

    var findEmail=false; function findEmail(){ alert("findEmail");} 这样函数不会运行. 为了保证函数可以运行,修改为: ...