`

Spring 2.5 标注开发的简单例子

阅读更多
Spring 2.5 标注开发的简单例子



研究了很久新出的 Spring 2.5, 总算大致明白了如何用标注定义 Bean, 但是如何定义和注入类型为 java.lang.String 的 bean 仍然未解决, 希望得到高人帮助.

总的来看 Java EE 5 的标注开发方式开来是得到了大家的认可了.

@Service 相当于定义 bean, 自动根据 bean 的类名生成一个首字母小写的 bean

@Autowired 则是自动注入依赖的类, 它会在类路径中找成员对应的类/接口的实现类, 如果找到多个, 需要用 @Qualifier("chineseMan") 来指定对应的 bean 的 ID.

一定程度上大大简化了代码的编写, 例如一对一的 bean 映射现在完全不需要写任何额外的 bean 定义了.

下面是代码的运行结果:

man.sayHello()=抽你丫的
SimpleMan said: Hi
org.example.EnglishMan@12bcd4b said: Fuck you!



代码:

beans.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"

       xmlns:context="http://www.springframework.org/schema/context"

       xsi:schemaLocation="http://www.springframework.org/schema/beans

           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

           http://www.springframework.org/schema/context

           http://www.springframework.org/schema/context/spring-context-2.5.xsd">

     <context:annotation-config/>

     <context:component-scan base-package="org.example"/>

    

</beans>

测试类:

import org.example.IMan;
import org.example.SimpleMan;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringTest {
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
        SimpleMan dao = (SimpleMan) ctx.getBean("simpleMan");
        System.out.println(dao.hello());
        IMan man = (IMan) ctx.getBean("usMan");
        System.out.println(man.sayHello());
    }
}

自动探测和注入bean的类:

package org.example;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

@Service
public class SimpleMan {
    // 自动注入名称为 Man 的 Bean
    @Autowired(required = false)
    @Qualifier("chineseMan")
    //@Qualifier("usMan")
    private IMan man;   

    /**
     * @return the man
     */
    public IMan getMan() {
        return man;
    }

    /**
     * @param man the man to set
     */
    public void setMan(IMan man) {
        this.man = man;
    }

    public String hello() {
        System.out.println("man.sayHello()=" + man.sayHello());
        return "SimpleMan said: Hi";
    }
}



一个接口和两个实现类:

package org.example;

/**
* 抽象的人接口.
* @author BeanSoft
* @version 1.0
*/
public interface IMan {
    /**
     * 打招呼的抽象定义.
     * @return 招呼的内容字符串
     */
    public String sayHello();
}



package org.example;

import org.springframework.stereotype.Service;

/**
* 中国人的实现.
* @author BeanSoft
*/
@Service
public class ChineseMan implements IMan {

    public String sayHello() {
        return "抽你丫的";
    }

}

 

package org.example;

import org.springframework.stereotype.Service;

/**
* @author BeanSoft
* 美国大兵
*/
@Service("usMan")
// 这里定义了一个 id 为 usMan 的 Bean, 标注里面的属性是 bean 的 id
public class EnglishMan implements IMan {

    public String sayHello() {
        return this + " said: Fuck you!";
    }

}
分享到:
评论

相关推荐

    Spring2.5注解(标注)学习笔记

    ### Spring2.5注解(标注)学习笔记 在探讨Spring2.5中常见的四个注解之前,我们先简要回顾一下Spring框架的基本概念。Spring框架是一个轻量级的Java应用开发框架,它通过依赖注入(DI)和面向切面编程(AOP)等...

    spring3 mvc 注解action dao service 实例教程

    到了Spring 2.5,框架进一步推出了完整的注解集,旨在替代原有的基于XML的配置方式。 #### 二、Spring 2.5 注解技术详解 ##### 1. 注解在Web层的应用 Spring 2.5 的注解技术不仅用于简化对象管理和依赖注入,还...

    spring注解详细介绍

    ### Spring注解详解 #### 一、Spring框架与注解技术背景 Spring 是一款轻量级的...综上所述,Spring 2.5 引入的基于注解的 IoC 配置方式极大地简化了配置流程,提高了开发效率,是现代 Java 应用开发的重要组成部分。

    4Spring自动装配——annotation resource方式

    在Spring 2.5引入了注解支持后,开发者可以使用注解来声明Bean的属性、方法或构造函数中的依赖,而无需XML配置。`@Autowired`是Spring中最常见的注解,用于自动装配匹配类型的Bean。然而,`@Resource`注解则提供了另...

    spring_ioc调用实力

    注解配置是Spring 2.5引入的新特性,它允许在类或方法上直接标注,简化了配置。例如,使用`@Component`标记一个类为Spring的bean,使用`@Autowired`自动装配依赖: ```java @Component("exampleBean") public class...

    详解spring自动扫描包

    Spring框架中自动扫描包的机制是从Spring 2.5版本引入的,这个机制可以在类路径底下寻找标注了@Component、@Service、@Controller、@Repository注解的类,并把这些类纳入进Spring容器中管理。这个机制的作用和在XML...

    Spring 中 @Service 和 @Resource 注解的区别

    在Spring 2.5之后,Spring引入了@Autowired注解,它是另一种依赖注入的方式。与@Resource不同,@Autowired是基于类型的注入,它会自动寻找与注入属性类型相匹配的bean。然而,当存在多个相同类型的bean时,@...

    javaSE代码实例

    3.7.4 令人困扰的例子 37 3.8 赋值运算 37 3.8.1 普通赋值运算 37 3.8.2 运算赋值运算 38 3.9 括号及运算符间的优先级关系 38 3.10 常用数学工具包——java.lang.Math类 39 3.10.1 数学常量 39 3.10.2...

    Maven权威指南 很精典的学习教程,比ANT更好用

    2.5. Maven安装细节 2.5.1. 用户相关配置和仓库 2.5.2. 升级Maven 2.6. 获得Maven帮助 2.7. 使用Maven Help插件 2.7.1. 描述一个Maven插件 2.8. 关于Apache软件许可证 I. Maven实战 3. 一个简单的...

Global site tag (gtag.js) - Google Analytics