一个简单的范例,主要注意程序的输出,自然可以明白注解的应用
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;
}
}
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框架是Java开发中不可或缺的一部分,它通过提供丰富的注解简化了依赖注入、配置管理和AOP(面向切面编程)等任务。本文将深入探讨Spring注解及其在实际开发中的应用。 1. **依赖注入(Dependency Injection, ...
### Spring的Annotation方式详解 #### 引言 随着Spring框架的发展,其依赖注入(DI)机制也经历了从XML配置向注解驱动的重大转变。自Spring 3.0版本起,框架引入了一系列注解来简化依赖配置,使得开发人员能够在不...
#### 一、Spring与Annotation的基本概念 Spring框架通过引入Annotation,极大地简化了Java开发中的依赖注入(Dependency Injection, DI)和面向切面编程(AOP)的过程。Annotation是一种元数据,允许开发者在代码中嵌入...
1. 使用 Spring 注解来注入属性 在使用 Spring 框架之前,我们通常使用 setter 方法来注入属性,例如: Java 代码 ```java public class UserManagerImpl implements UserManager { private UserDao userDao; ...
在Spring框架中,Annotation配置是一种简洁且强大的方式来管理Bean的定义和依赖注入,它消除了传统的XML配置文件,使得代码更加简洁、易读。在Spring 3.0及以上版本中,Annotation配置得到了广泛的应用。 首先,...
花了些时间做了一个实验,彻底弄懂了spring Annotation注入的方式。凡带有@Component,@Controller,@Service,@Repository 标志的等于告诉Spring这类将自动产生对象,而@Resource则等于XML配置中的ref,告诉spring此处...
在IT行业中,Spring框架是Java开发中的核心工具之一,它为开发者提供了许多强大的功能,包括依赖注入、面向切面编程(AOP)等。本文将深入探讨如何利用Spring的注解式AOP和反射机制来实现日志记录,以便更好地理解和...
在IT行业中,Spring框架是Java开发中的一个核心组件,尤其在企业级应用开发中广泛应用。Spring框架以其模块化、灵活性和强大的功能而闻名,其中一项重要特性就是它对面向切面编程(Aspect-Oriented Programming,...
标题 "SpringIOC_SpringMVC_SpringAnnotation_JPA" 涵盖了四个核心的Java开发框架技术,它们是Spring框架的重要组成部分。Spring框架是一个开源的应用框架,它为Java开发者提供了一个全面的基础设施,用于构建可扩展...
一、Spring MVCAnnotation 验证简介 Spring MVC 框架提供了多种Annotation来实现验证,例如 @NotNull、@NotBlank、@Email 等。这些 Annotation 可以直接应用于模型(Model)中的属性上,从而实现数据验证。 二、...
Spring是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)、事务管理等功能;而MyBatis则是一个轻量级的持久层框架,它将SQL与Java代码分离,使数据库操作更加灵活。本项目结合了两者,利用注解方式来...
本项目是一个整合了这三个框架的基于Annotation和Maven的项目,旨在提供一种高效、灵活的开发模式。 SpringMVC是Spring框架的一部分,主要用于构建Web应用程序的Model-View-Controller(MVC)架构。它提供了一个...
本篇主要聚焦于"Spring 常用 Transaction Annotation",即声明式事务管理,这是一种更简洁、易于维护的事务控制方式。 首先,Spring的声明式事务管理基于AOP(面向切面编程),它允许我们在不修改业务代码的情况下...
1. `@Component`:这是一个基础注解,用于标记一个类为Spring中的Bean。通常,我们将其放在控制器、服务或DAO类上,让Spring容器知道哪些类需要被管理。 2. `@Service`:这个注解是`@Component`的特化,主要用于...
1. `@Component`:这是所有Spring组件的基础注解,用于标记一个类为Spring管理的bean。子注解如`@Service`、`@Repository`和`@Controller`分别用于服务层、数据访问层和表现层。 2. `@Autowired`:这个注解用于自动...