`
noname365
  • 浏览: 134061 次
社区版块
存档分类
最新评论

Spring Annotation简介一

阅读更多

一个简单的范例,主要注意程序的输出,自然可以明白注解的应用

  • 定义接口

package org.study.spring.dao;


import java.util.List;

public interface MovieDao {
    public List<String> findAll();

}

  • 实现接口

package org.study.spring.dao.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Repository;
import org.study.spring.dao.MovieDao;

//Spring默认采用单例模式,采用prototype属性,每次调用都创建对象
@Scope("singleton")
@Repository(value = "movieImpl")
public class MovieInMemeryDaoImpl implements MovieDao {

    List<String> movies = null;

    public List<String> findAll() {
        movies = new ArrayList<String>();
        movies.add("风吹稻浪");
        movies.add("冈萨雷斯凭");
        movies.add("岁月");
        return movies;
    }

}

  • Service实现

package org.study.spring.service;

import java.util.Arrays;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import org.study.spring.dao.MovieDao;

/**
 * @Repository、@Service和 @Controller则是@Component的细化,
 *                       用来表示更具体的用例(例如,分别对应了持久化层、服务层和表现层)。
 *                       也就是说,你能用@Component来注解你的组件类, 但如果用@Repository、@Service
 *                       或@Controller来注解它们,你的类也许能更好地被工具处理,或与切面进行关联。
 *
 * @author Administrator 默认为类名首字母小写,通过value属性可自定义Bean的标识
 *
 */
@Scope("prototype")
@Service(value = "sms")
public class SimpleMovieService {
    static int i = 0;
    private MovieDao movieFinder;

    // @Autowired 自动进行注入,但须在spring配置文件中进行配置,并保证唯一性
    @Autowired
    public SimpleMovieService(MovieDao movieFinder) {
        i++;
        System.out.println("创建对象个数:" + i);
        this.movieFinder = movieFinder;
    }

    public void printFindedMovie() {
        List<String> movies = movieFinder.findAll();
        System.out.println(Arrays.deepToString(movies.toArray()));
    }
}

  • 客户端

package org.study.spring;

import java.util.Arrays;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.study.spring.service.SimpleMovieService;

public class MainApp {

    /**
     * @param args
     */
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("ctx.xml");
        String[] beanNames = ctx.getBeanDefinitionNames();
        System.out
                .println("Spring中的定义的Bean有:" + Arrays.deepToString(beanNames));

        System.out.print("找到的电影有:");
        SimpleMovieService simpleBean1 = (SimpleMovieService) ctx
                .getBean("sms");
        simpleBean1.printFindedMovie();

        SimpleMovieService simpleBean2 = (SimpleMovieService) ctx
                .getBean("sms");
        simpleBean2.printFindedMovie();
        System.out.println("修改@Scope属性值,比较两次输出的不同!");
    }

}

分享到:
评论

相关推荐

    Spring annotation

    Spring框架是Java开发中不可或缺的一部分,它通过提供丰富的注解简化了依赖注入、配置管理和AOP(面向切面编程)等任务。本文将深入探讨Spring注解及其在实际开发中的应用。 1. **依赖注入(Dependency Injection, ...

    spring 的Annotation方式

    ### Spring的Annotation方式详解 #### 引言 随着Spring框架的发展,其依赖注入(DI)机制也经历了从XML配置向注解驱动的重大转变。自Spring 3.0版本起,框架引入了一系列注解来简化依赖配置,使得开发人员能够在不...

    spring的Annotation注解.

    #### 一、Spring与Annotation的基本概念 Spring框架通过引入Annotation,极大地简化了Java开发中的依赖注入(Dependency Injection, DI)和面向切面编程(AOP)的过程。Annotation是一种元数据,允许开发者在代码中嵌入...

    spring annotation注解

    1. 使用 Spring 注解来注入属性 在使用 Spring 框架之前,我们通常使用 setter 方法来注入属性,例如: Java 代码 ```java public class UserManagerImpl implements UserManager { private UserDao userDao; ...

    Spring的Annotation配置相关讲义

    在Spring框架中,Annotation配置是一种简洁且强大的方式来管理Bean的定义和依赖注入,它消除了传统的XML配置文件,使得代码更加简洁、易读。在Spring 3.0及以上版本中,Annotation配置得到了广泛的应用。 首先,...

    Spring注释 注入方式源码示例,Annotation

    花了些时间做了一个实验,彻底弄懂了spring Annotation注入的方式。凡带有@Component,@Controller,@Service,@Repository 标志的等于告诉Spring这类将自动产生对象,而@Resource则等于XML配置中的ref,告诉spring此处...

    利用 spring annotation AOP 反射 记录日志

    在IT行业中,Spring框架是Java开发中的核心工具之一,它为开发者提供了许多强大的功能,包括依赖注入、面向切面编程(AOP)等。本文将深入探讨如何利用Spring的注解式AOP和反射机制来实现日志记录,以便更好地理解和...

    Spring_Annotation_AOP

    在IT行业中,Spring框架是Java开发中的一个核心组件,尤其在企业级应用开发中广泛应用。Spring框架以其模块化、灵活性和强大的功能而闻名,其中一项重要特性就是它对面向切面编程(Aspect-Oriented Programming,...

    SpringIOC_SpringMVC_SpringAnnotation_JPA

    标题 "SpringIOC_SpringMVC_SpringAnnotation_JPA" 涵盖了四个核心的Java开发框架技术,它们是Spring框架的重要组成部分。Spring框架是一个开源的应用框架,它为Java开发者提供了一个全面的基础设施,用于构建可扩展...

    Spring MVC Annotation验证的方法

    一、Spring MVCAnnotation 验证简介 Spring MVC 框架提供了多种Annotation来实现验证,例如 @NotNull、@NotBlank、@Email 等。这些 Annotation 可以直接应用于模型(Model)中的属性上,从而实现数据验证。 二、...

    Spring+mybatis annotation形式

    Spring是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)、事务管理等功能;而MyBatis则是一个轻量级的持久层框架,它将SQL与Java代码分离,使数据库操作更加灵活。本项目结合了两者,利用注解方式来...

    SpringMVC Spring MyBatis 框架整合 Annotation Maven Project

    本项目是一个整合了这三个框架的基于Annotation和Maven的项目,旨在提供一种高效、灵活的开发模式。 SpringMVC是Spring框架的一部分,主要用于构建Web应用程序的Model-View-Controller(MVC)架构。它提供了一个...

    Spring 常用 Transaction Annotation

    本篇主要聚焦于"Spring 常用 Transaction Annotation",即声明式事务管理,这是一种更简洁、易于维护的事务控制方式。 首先,Spring的声明式事务管理基于AOP(面向切面编程),它允许我们在不修改业务代码的情况下...

    Spring IOC Annotation 注入 学习实例

    1. `@Component`:这是一个基础注解,用于标记一个类为Spring中的Bean。通常,我们将其放在控制器、服务或DAO类上,让Spring容器知道哪些类需要被管理。 2. `@Service`:这个注解是`@Component`的特化,主要用于...

    springAnnotation.zip

    1. `@Component`:这是所有Spring组件的基础注解,用于标记一个类为Spring管理的bean。子注解如`@Service`、`@Repository`和`@Controller`分别用于服务层、数据访问层和表现层。 2. `@Autowired`:这个注解用于自动...

Global site tag (gtag.js) - Google Analytics