spring 注解实例

先不说网上的那些例子了,百度到的都是一些零碎的东西。我之所以记博客,除了总结之外,很大一个原因是对网上的某些东西真的很无语。

拿注解来说,什么入门实例的东西,说是入门,却连一个基本的hello world 都没有,呵呵。

之前一直都是用xml配置,注解现在用的也多了,要好好看看。

本篇里面都是基础,代码清单都会列全。

首先是引入spring包,这里用的是maven,pom.xml加入:

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.0.6.RELEASE</version>
    </dependency>
    

然后maven install,引入包。

接着,xml的配置文件,这里包括头文件,以及注解需要的配置:

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.xsd
        http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd">

       <context:annotation-config></context:annotation-config>
       <context:component-scan base-package="com.spring.ioc"></context:component-scan>
</beans>

好了,从现在开始。

代码结构:

Man包下是第二个例子。

先说第一个例子,无接口的。

person.java:

package com.spring.ioc;

import org.springframework.stereotype.Component;

@Component
public class Person {
    private String name;
    private String sex;

    public Person() {
        name="wang";
        sex="man";
    }
/*    public Person(String name, String sex) {
        super();
        name="wang";
        sex="man";
    }*/
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }

}

里面初始化了一些数据,作为一个bean。

depart.java:

package com.spring.ioc;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class Depart {

    @Autowired
    private Person person;

    public String getDepart(){
        String s=person.getName()+" in depart";
        return s;
    }
}

这个是为了演示,在depart里面注入person。

主类测试用的:

package com.spring.ioc;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {

    public static void main(String[] args) {
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("beans.xml");
        Depart depart=(Depart) applicationContext.getBean("depart");
        System.out.println(depart.getDepart());
    }
}

运行后,结果:

wang in depart

第二个例子,带有接口的例子:

创建接口,man:

package com.spring.ioc.Man;

public interface Man {
    public String say();
}

然后有两个实现类:

package com.spring.ioc.Man;

import org.springframework.stereotype.Component;

@Component
public class Chinese implements Man {

    public String say() {
        // TODO Auto-generated method stub
        return "你好";
    }

}
package com.spring.ioc.Man;

import org.springframework.stereotype.Component;

@Component
public class American implements Man {

    public String say() {
        // TODO Auto-generated method stub
        return "hello";
    }

}

然后创建一个类,注入这两个接口实现类。

package com.spring.ioc.Man;

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

@Component
public class ManService {
    @Autowired
    @Qualifier(value="chinese")
    private Man man;

    public String sayChineseHello(){
        return man.say()+",欢迎";
    }
    @Autowired
    @Qualifier(value="american")
    private Man aman;
    public String sayEnglishHello(){
        return aman.say()+",welcome";
    }
}

主类:

package com.spring.ioc.Man;

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

public class Main {

    public static void main(String[] args) {
        ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
        ManService manService=(ManService) context.getBean("manService");
        String string=manService.sayChineseHello();
        System.out.println(string);
        System.out.println(manService.sayEnglishHello());
    }
}

运行结果:

你好,欢迎
hello,welcome

关于接口的,要在实现类上面添加注解说明。坑爹的,网上有篇文章说是要在接口上添加注解,不能在实现类上面,导致错误了半天。

关于注解的各个标签,可以单独百度一下,很多讲解。

spring 注解实例

时间: 2024-10-06 16:55:54

spring 注解实例的相关文章

Spring注解实例

public class ActivityAction extends CoreAction { private static final Logger log = Logger.getLogger(ActivityAction.class); @Autowired private ActivityMng activityMng; @Service @Transactional public class ActivityMngImpl extends CoreManagerImpl<Activi

Spring Aop实例之AspectJ注解配置

http://blog.csdn.net/xiaoxian8023/article/details/17285809 上篇博文<Spring Aop实例之xml配置>中,讲解了xml配置方式,今天来说说AspectJ注解方式去配置spring aop. 依旧采用的jdk代理,接口和实现类代码请参考上篇博文.主要是将Aspect类分享一下: [java] view plaincopy package com.tgb.aop; import org.aspectj.lang.JoinPoint;

Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(三)

前两章我为大家详细介绍了如何搭建Maven环境.Spring MVC的流程结构.Spring MVC与Struts2的区别以及示例中的一些配置文件的分析.在这一章,我就对示例的层次结构进行说明,以及MyBatis的一些简单介绍. 本文不会对MyBatis作详细说明,大象还是假定阅读本文的朋友对MyBatis(ibatis)有最基本的了解,只有这样才能较好的理解本文的内容.关于MyBatis请查看它的官方文档及其它参考资料,本文不作详细讨论. 一.工程结构图      上面这是典型的Maven项目

Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(一)

Spring更新到3.0之后,其MVC框架加入了一个非常不错的东西——那就是REST.它的开放式特性,与Spring的无缝集成,以及Spring框架的优秀表现,使得现在很多公司将其作为新的系统开发框架.大象根据实际的项目经验,以之前SSH2例子为基础,对其进行一次大改造,详细的为大家讲解如何实现SSM3全注解式的开发. 这次大象将采取两种构建方式,一是很多人喜欢用的MyEclipse,另一个,则是用Eclipse+Maven.这一篇,将主要讲解开发环境设置与Maven构建方式. 1. 开发环境

Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(二)

在上一篇文章中我详细的介绍了如何搭建maven环境以及生成一个maven骨架的web项目,那么这章中我将讲述Spring MVC的流程结构,Spring MVC与Struts2的区别,以及例子中的一些配置文件的分析. 一.Spring MVC 3.0介绍 Spring MVC是一个典型的MVC框架,是Spring内置的Web框架,可以作为应用项目的展示层,继Spring 2.0对Spring MVC进行重大升级后,Spring 2.5又为Spring MVC引入了注解驱动功能,再到3.0时代,全

Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(四)

这一章大象将详细分析web层代码,以及使用Spring MVC的注解及其用法和其它相关知识来实现控制器功能.     之前在使用Struts2实现MVC的注解时,是借助struts2-convention这个插件,如今我们使用Spring自带的spring-webmvc组件来实现同样的功能,而且比之以前更简单.另外,还省掉了整合两个框架带来的不稳定因素.     对于Spring MVC框架,我主要讲一下它的常用注解,再结合一些示例进行说明,方便大家能够快速理解.     一.Spring MV

Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(五)

这是本系列的最后一篇,主要讲一下FreeMarker模板引擎的基本概念与常用指令的使用方式.     一.FreemMarker基本概念     FreemMarker是一个用Java语言编写的模板引擎,它是一个基于模板来生成文本输出的一个工具.是除了JSP之外被使用得最多的页面模板技术之一,另一个比较有名的模板则是Velocity.     用户可以使用FreeMarker来生成所需要的内容,通常由Java提供数据模型,FreeMarker通过模板引擎渲染数据模型,这样最终得到我们想要的内容.

【Quartz】基于Spring注解方式配置Quartz

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka         在上讲[Quartz]Spring3.2.9+Quqrtz2.2.1实现定时实例中,我们使用了XML的方式来配置Quartz定时任务,虽然比用API的方式简便多了,但是Spring还支持基本注解的方式来配置.这样做不仅更加简单,而且代码量也更加少了. 新建一个Java工程,导入要用到的包,Spring3.2.Quartz2.2.1.aopalliance-1.0.jar.co

spring注解详解

1. 使用Spring注解来注入属性 1.1. 使用注解以前我们是怎样注入属性的 类的实现: Java代码 public class UserManagerImpl implements UserManager { private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } ... } public class UserManagerImpl implements Use