首先是一个名叫Action的接口定义了一个execute()方法
package net.xiaxin.spring.qs; public interface Action { public String execute(String str); }
实现类LowerAction
package net.xiaxin.spring.qs; public class LowerAction implements Action { private String message; @Override public String execute(String str) { // TODO Auto-generated method stub return (getMessage()+str).toLowerCase(); } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
实现类UpperAction
package net.xiaxin.spring.qs; public class UpperAction implements Action { private String message; @Override public String execute(String str) { // TODO Auto-generated method stub return (getMessage()+str).toUpperCase(); } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
新建bean.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/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"> <bean id="TheAction" class="net.xiaxin.spring.qs.UpperAction"> <property name="message"><!--初始化--> <value>HeLLo</value> </property> </bean> </beans>
请确保配置bean.xml位于工作路径之下,注意工作路径并不等同于CLASSPATH ,eclipse的默认工作路径为项目根路径,也就是.project文件所在的目录,而默认输出目录/bin是项目CLASSPATH的一部分,并非工作路径。
测试类Test
package test; import net.xiaxin.spring.qs.Action; import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; public class Test { public static void main(String[] args) { ApplicationContext txt=new FileSystemXmlApplicationContext("bean.xml"); Action action=(Action) txt.getBean("TheAction"); System.out.println(action.execute("sdf")); } }
上面的测试代码中,我们根据 "bean.xml" 创建了一个 ApplicationContext 实例,并从此实例中获取我们所需的Action实现
仔细观察一下上面的代码,可以看到:
1. 我们的所有程序代码中(除测试代码之外) ,并没有出现Spring中的任何组件。
2. UpperAction和LowerAction的Message属性均由Spring通过读取配置文件(bean.xml)动态设置。
3. 客户代码(这里就是我们的测试代码)仅仅面向接口编程,而无需知道实现类的具体名称。同时,我们可以很简单的通过修改配置文件来切换具体的底层实现类。
上面所说的这些,对于我们的实际开发有何帮助?
首先,我们的组件并不需要实现框架指定的接口,因此可以轻松的将组件从Spring中脱离,甚至不需要任何修改(这在基于EJB框架实现的应用中是难以想象的) 。
其次,组件间的依赖关系减少,极大改善了代码的可重用性。Spring的依赖注入机制,可以在运行期为组件配置所需资源,而无需在编写组件代码时就加以
指定,从而在相当程度上降低了组件之间的耦合。
上面的例子中,我们通过Spring,在运行期动态将字符串 “HeLLo” 注入到Action实现类的
以上例子来源于spring开发指南
相关推荐
【描述】:“Java Spring MVC超简单,Spring MVC入门,第一个Java程序,IntelliJ IDEA入门” 这表明我们将从零开始,逐步学习如何在IntelliJ IDEA这个强大的Java集成开发环境中配置Spring MVC环境,创建并运行一个...
- **超媒体支持**:支持使用 Pageable 参数来构建链接到其他资源的超媒体文档。 - **Repository Populators**:可以用来初始化数据库或填充初始数据。 - **遗留 Web 支持**: - **域类 Web 绑定**:Spring MVC ...
【标题】:“mybatis入门教程(一)(超简单)1” 【描述】:“2、将sql语句硬编码到java代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护3、向preparedStatement中设置参数,对占” 【标签】:...
了解如何配置这些过滤器是入门Spring Security的关键。 - **示例代码**: 在`web.xml`中配置`<filter>`和`<filter-mapping>`,定义Spring Security的入口。 - **1.2 使用命名空间** - Spring Security支持在`...
根据提供的文件信息,我们可以从《Oracle 11g从入门到精通》这本书中提炼出一些重要的知识点。本书主要围绕Oracle 11g数据库系统展开,不仅适合初学者,也适用于有一定经验的技术人员深入学习。 ### Oracle 11g概述...
Spring框架提供了丰富的支持,包括Spring-WS和Spring-Integration,使得构建和消费Web服务变得更加简单。Spring-WS专注于创建基于WSDL的契约优先的Web服务,而Spring-Integration则关注于企业级应用集成。 在Spring...
以下是一个简单的MyBatis使用示例,演示如何根据用户ID查询用户信息: 1. 首先,在`SqlMapConfig.xml`中配置数据源和mapper文件引用: ```xml ${jdbc.driver}"/> ${jdbc.url}"/> ${jdbc.username}"/> ${...
例如,Spring Joint可以模拟绳索的弹性,通过调整其属性,如弹簧强度、Damper(阻尼)等,来控制绳索的软硬度和动态效果。 此外,如果`Assets`文件夹中包含有脚本(Script),那这些脚本很可能是自定义的,用于处理...
Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于 Java 的超快速、超稳定的 BPMN2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更加强调面向业务人员。 Activiti 流程引擎...
idea集成开发环境下的,用mysql快速搭建ssh(struts2+spring+hibernate)矿建,超详细教程,有实例供参考,方便快速入门
Java二进制IO类与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...
然后,需要添加其他依赖项,以便完成简单的CURD例子: ```xml <groupId>org.springframework.boot <artifactId>spring-boot-starter-data-jpa <groupId>org.springframework.boot <artifactId>spring-boot-...
SSM框架整合是Java开发中常见的技术栈,主要包括Spring、SpringMVC和Mybatis三个核心组件。...你可以结合博客文章《Java的SSM框架超详细整合入门》深入学习,理论与实践相结合,更好地掌握SSM框架的整合技巧。
在"springboot(一)"阶段,可能涉及的是SpringBoot的入门知识,比如创建第一个SpringBoot应用、理解启动器(Starters)的作用、如何配置日志系统(Logback或Log4j2)以及使用Spring Initializr快速初始化项目。...
第一章:Java Web入门 这一章通常会介绍Java Web的基本概念,包括Web应用的架构、Java在Web开发中的角色,以及如何搭建开发环境,如安装JDK、设置环境变量,以及配置Tomcat服务器。 第二章:HTML与CSS基础 HTML(超...
- 安装:Activiti可以作为独立的服务运行,也可以集成到Spring等框架中。首先,你需要下载Activiti的发布包,解压后配置数据库连接、Tomcat或Jetty服务器,然后将Activiti的web应用部署到服务器上。 - 部署:配置...
课程的主题可能是 CIS 155,这通常指的是计算机信息系统或相关入门课程,旨在教授学生基本的计算机编程和网页设计技能。 描述中的内容与标题相同,进一步确认这是一个课程相关的资源包,可能包含了讲义、作业、项目...
9. **MVC框架**:Servlet常与Model-View-Controller(MVC)设计模式结合使用,如Spring MVC,提高代码组织和可维护性。 10. **JSP(JavaServer Pages)**:JSP是另一种Java Web技术,可与Servlet配合使用,负责视...