Spring学习笔记--声明一个简单的Bean

spring依赖的maven dependency
http://mvnrepository.com/artifact/org.springframework

在pom.xml中添加如下依赖:

<!-- http://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>4.2.6.RELEASE</version>
</dependency>

<!-- http://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>4.2.6.RELEASE</version>
</dependency>

第一个例子:
首先设置一个接口Perofrmance表示参赛者。

package com.moonlit.myspring;

public interface Performer {
    void perform() throws PerformanceException;
}

创建一个Juggler(杂技师)类继承Performer表示参赛者是杂技师

package com.moonlit.myspring;

public class Juggler implements Performer {
    private int beanBags = 3;
    public Juggler() {
    }
    public Juggler(int beanBags) {
        this.beanBags = beanBags;
    }
    public void perform() throws PerformanceException {
        System.out.println("JUGGLING " + beanBags + " BEANBAGS");
    }
}

在spring-idol.xml配置文件中定义一个名为duke的bean,他对应Juggler类(我把xml文件放在src/main/resources目录下)

<?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-3.0.xsd">

  <bean id="duke" class="com.moonlit.myspring.Juggler" />

</beans>

测试代码:

package com.moonlit.practice;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.moonlit.myspring.PerformanceException;
import com.moonlit.myspring.Performer;

public class FirstBean {
    public static void main(String[] args) throws PerformanceException {
        ApplicationContext context = new ClassPathXmlApplicationContext(
                "spring-idol.xml");
        Performer performer = (Performer) context.getBean("duke");
        performer.perform();
    }
}

运行结果如下:

JUGGLING 3 BEANBAGS

理解:首先定义了一个接口Performer,然后写了一个类Juggler继承自Peformer,Juggler有一个私有成员变量beanBags,他的默认值是3,然后Juggler实现了Performer的perform方法,方法的输出带有beanBags的数量。
然后在测试的程序中,通过ApplicationContext类型对象加载了spring-idol.xml文件的内容,而在xml文件中定义了名为"duke"的bean,然后我刚好就用到了。
然后bean返回的是一个Juggler,所以我将

Performer performer = (Performer) context.getBean("duke");

改成

Juggler performer = (Juggler) context.getBean("duke");

也是可以的,但是在这里我想看的效果是通过application context返回的是不是一个Juggler,因为通过输出的结果就可以知道了,所以我这里用(Performer),对中输出的效果显示bean对应的Performer真的是一个Juggler,这就是通过xml定义一个bean并通过application context获得这个bean对象的整个过程。

时间: 2024-10-14 04:43:27

Spring学习笔记--声明一个简单的Bean的相关文章

spring学习笔记(6)装配Bean 的种类和区别 【资源来自网络 版权非本人】

Bean的种类 1.普通Bean:之前操作的都是普通bean <bean  id="" class="A"> Spring 就直接创建A 然后返回 2.FactoryBean:是一个特殊的Bean,具有工厂生产对象的能力,但是只能生产特定的对象 bean必须实现Factorybean的接口,此接口提供一个getObject()来获得特定的bean. <bean id="" calss="Factorybean"

Android学习笔记——创建一个简单的上下文菜单ContextMenu

例子目标: 在一个显示出来的内容区域内,触摸屏幕显示一个上下文菜单,并且实现监听,当选择菜单项的时候,获得用户选择的项的内容. 实现原理: 1.向内容Activity中的需要显示上下文菜单的内容区域注册上下文菜单响应 2.设计上下文菜单样式 3.在Activity中实现上下文菜单的方法 代码: 上下文菜单的XML内容 <?xml version="1.0" encoding="utf-8"?><menu xmlns:android="ht

cpp学习笔记 1一个简单的小程序以及一些的知识点

今天买的cpp到了从今天開始又一次学习cpp如今发现学校发的书真的不怎莫样. <em>#include<stdio.h>//预处理命令 int main()/*第一个被调用的函数.能够比作是一个房子的门()代表main是一个函数. int 指明了返回值的类型*/ { int num;/*声明语句.声明了两件事一有一个名为num的变量二int 说明生命的变量 是一个整形. int是一个keyword num 是一个标示符 */ num = 1;//给变量赋值 printf("

spring学习笔记(5)装配Bean 实例工厂 【资源来自网络 版权非本人】

实例工厂:必须现有工厂的实例对象,通过实例对象创建对象.所有的方法都是非静态的(这一点和静态工厂有区别) (直接看代码) 工厂(和静态工厂的区别就是非静态 其他都一样) package c_inject.c_factory; /* * 实例工厂 */ public class MyBeanFactory { public UserService createService(){ return new UserserviceImpl(); } } 配置(配置和静态的有点区别  仔细看看吧 ) <?

《spring实战》学习笔记-第二章:装配bean

2.1 Spring配置的可选方案 当描述bean如何进行装配时,Spring具有非常大的灵活性,它提供了三种主要的装配机制: (1)在XML中进行显式配置. (2)在Java中进行显式配置. (3)隐式的bean发现机制和自动装配. 建议是尽可能地使用自动配置的机制.显式配置越少越好.当你必须要显式配置bean的时候(比如,有些源码不是由你来维护的,而当你需要为这些代码配置bean的时候),我推荐使用类型安全并且比XML更加强大的JavaConfig.最后,只有当你想要使用便利的XML命名空间

Spring学习笔记(三)之装配Bean

除了组件扫描与自动装配之外还有基于Java代码的装配与基于XML的装配. 有一些场景是我们不能用自动装配的,比如我们要给第三方库中的组件装配到我们的应用中,这时自动装配无效,因为自动装配只能扫描本应用中的包. 这时我们就要在基于代码代码的装配和基于XML的装配中进行选择,前面我们说到了JavaConfig相比XML更强大更安全. 一.基于Java代码的装配Bean(JavaConfig) 但是JavaConfig又与Java有所区别. 概念上  JavaConfig是配置 与应用的其他代码业务逻

不错的Spring学习笔记(转)

Spring学习笔记(1)----简单的实例 ---------------------------------   首先需要准备Spring包,可从官方网站上下载.   下载解压后,必须的两个包是spring.jar和commons-logging.jar.此外为了便于测试加入了JUnit包.   在Myeclipse中创建Java项目.   编写一个接口类,为了简单,只加入了一个方法.   Java代码   1.package com.szy.spring.interfacebean;  

《Spring学习笔记》:Spring、Hibernate、struts2的整合(以例子来慢慢讲解,篇幅较长)

<Spring学习笔记>:Spring.Hibernate.struts2的整合(以例子来慢慢讲解,篇幅较长) 最近在看马士兵老师的关于Spring方面的视频,讲解的挺好的,到了Spring.Hibernate.struts2整合这里,由于是以例子的形式来对Spring+Hibernate+struts2这3大框架进行整合,因此,自己还跟着写代码的过程中,发现还是遇到了很多问题,因此,就记录下. 特此说明:本篇博文完全参考于马士兵老师的<Spring视频教程>. 本篇博文均以如下这

Spring学习笔记(一)

Spring学习笔记(一) Spring核心思想: IOC:  Inversion Of Control (控制反转) / DI: Dependency Injection (依赖注入) AOP: Aspect Oriented Programming (面向切面编程) IOC 1. 简单的应用 Model package com.wangj.spring.model; public class User { private String username; private String pas