版权声明

  笔记出自《Spring 开发指南》一书。

Spring 初探

  前面我们简单介绍了 Spring 的基本组件和功能,现在我们来看一个简单示例:

  1. Person接口
    Person接口定义了一个 say 的方法,在其不同的实现中实现了各自的 say 逻辑。

     /**
      * @author X
      */
     public interface Person {
    
         public void say();
     }
  2. Person接口的两个实现
     /**
      * @author X
      */
     public class Man implements Person {
    
         private String word;
    
         public String getWord() {
             return word;
         }
    
         public void setWord(String word) {
             System.out.println("执行了Set");
             this.word = word;
         }
    
         @Override
         public void say() {
             System.out.println("一个男人委屈的说:" + word);
         }
     }
     /**
      * @author X
      */
     public class Woman implements Person {
    
         private String word;
    
         public String getWord() {
             return word;
         }
    
         public void setWord(String word) {
             this.word = word;
         }
    
         @Override
         public void say() {
             System.out.println("一个女人委屈的说:" + word);
         }
     }
  3. Spring配置文件(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.xsd">
    
         <bean id="TheAction" class="Man">
             <property name="word">
                 <value>一百块钱都不给我还打我</value>
             </property>
         </bean>
     </beans>
  4. 调用代码
     import org.springframework.context.ApplicationContext;
     import org.springframework.context.support.FileSystemXmlApplicationContext;
    
     /**
      * @author X
      */
     public class Run {
         public static void main(String[] args) {
    
             ApplicationContext ac = new FileSystemXmlApplicationContext("D:\\Study\\study-spring\\src\\main\\resources\\bean.xml");
    
             Person action = (Person) ac.getBean("TheAction");
             action.say();
         }
     }

    运行结果如下图所示:

     

  怎么样,是不是很简单?通过这个简单的例子,我们可以看到,我们在实例化Person的时候,根本无需知道它是如何实现的。在编码中,我们只需要去关心接口就可以了,而无需关心它的创建过程,因为这件事 Spring 已经帮我们做掉了。如果你想了解更多,推荐你去了解控制反转(IOC)和依赖注入(DI)的概念。

Spring学习笔记(二) 初探Spring的更多相关文章

  1. Spring学习(二)——Spring中的AOP的初步理解[转]

      [前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring. ...

  2. Spring学习(二)——Spring中的AOP的初步理解

    [前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring.不知 ...

  3. spring学习笔记二 注解及AOP

    本节需要导入spring-aop包 注解 使用注解的目的是为了代替配置,在使用注解时,省略键时,则是为value赋值. 扫描某个包下的所有类中的注解 <?xml version="1. ...

  4. Spring学习笔记五:Spring进行事务管理

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6776256.html  事务管理主要负责对持久化方法进行统一的提交或回滚,Spring进行事务管理即我们无需在 ...

  5. Spring学习(二)--Spring的IOC

    1.依赖反转模式 依赖反转:高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象接口.抽象接口不应该依赖于具体实现.而具体实现则应该依赖于抽象接口. 在面向对象编程领域中,依赖反转原则(Depe ...

  6. Spring学习笔记(二)之装配Bean

    一,介绍Bean的装配机制 在Spring中,容器负责对象的创建并通过DI来协调对象之间的关系.但是我们要告诉Spring创建哪些Bean并且如何将其装配在一起.,装配wiring就是DI依赖注入的本 ...

  7. Spring学习笔记二:注入方式

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6774608.html  我们说,IOC的实现方式是依赖注入,也就是把被依赖对象赋值到依赖对象的成员属性.怎么做 ...

  8. Spring学习笔记(二)

    1.Spring MVC 返回json数据 <bean class="org.springframework.web.servlet.mvc.annotation.Annotation ...

  9. Spring 学习笔记(二)

    spring 核心 (xml方式.注解方式) 两种方式实现 ioc :控制反转 aop : 面向切面

  10. spring学习笔记二:spring使用构造方法注入(set方式注入)

    项目目录树: 1.spring的依赖包配置 * SPRING_HOME/dist/spring.jar * SPRING_HOME/lib/log4j/log4j-1.2.14.jar * SPRIN ...

随机推荐

  1. P3399 丝绸之路

    题目背景 张骞于公元前138年曾历尽艰险出使过西域.加强了汉朝与西域各国的友好往来.从那以后,一队队骆驼商队在这漫长的商贸大道上行进,他们越过崇山峻岭,将中国的先进技术带向中亚.西亚和欧洲,将那里的香 ...

  2. 一个关于C++拷贝构造的bug

    #include <iostream> using namespace std; class A { public: A(int a) {}; A(const A&) = defa ...

  3. Python框架、库和软件资源大全(整理篇)

    有少量修改,请访问原始链接.PythonWIn的exe安装包;http://www.lfd.uci.edu/~gohlke/pythonlibs/ 原文链接:codecloud.net/python- ...

  4. JS 实现类似打印的效果(一个字一个字显示)

    <pre id="aa"></pre> <div style="display:none" id="w"> ...

  5. Lazy Initialization with Swift

    Lazy initialization (also sometimes called lazy instantiation, or lazy loading) is a technique for d ...

  6. Bootstrap 有一个 class 属性叫做 well,它的作用是为设定的列创造出一种视觉上的深度感

    Bootstrap 有一个 class 属性叫做 well,它的作用是为设定的列创造出一种视觉上的深度感

  7. JS 猴子

    公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的. 到第七天的时候,猴子睁开眼发现只剩下一个桃子.问公园里刚开始有多少个桃子? <!DOCTYPE html> ...

  8. 【udacity】机器学习-回归

    Evernote Export 1.什么是回归? regression 在监督学习中,包括了输入和输出的样本,在此基础上,我们能够通过新的输入来表示结果,映射到输出 输出包含了离散输出和连续输出 2. ...

  9. LaTeX soul包

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50774955 详细的soul包的官方P ...

  10. 最短路&查分约束

    [HDU] 1548 A strange lift 根蒂根基最短路(或bfs)★ 2544 最短路 根蒂根基最短路★ 3790 最短路径题目 根蒂根基最短路★ 2066 一小我的观光 根蒂根基最短路( ...