Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository、@Service 和 @Controller。在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层、业务层和控制层(Web 层)相对应。虽然目前这 3 个注释和 @Component 相比没有什么新意,但 Spring 将在以后的版本中为它们添加特殊的功能。所以,如果 Web 应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用 @Repository、@Service 和 @Controller 对分层中的类进行注释,而用 @Component 对那些比较中立的类进行注释。
在一个稍大的项目中,通常会有上百个组件,如果这些组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找以及维护起来也不太方便。 Spring2.5为我们引入了组件自动扫描机制,他可以在类路径底下寻找标注了 @Component,@Service,@Controller,@Repository注解的类,并把这些类纳入进spring容器中管理。它的作用和在xml文件中使用bean节点配置组件时一样的。要使用自动扫描机制,我们需要打开以下配置信息:
Java代码
1. <?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"
2. >
3.
4. <context:component-scan base-package=”com.eric.spring”>
5. </beans>
6. 其中base-package为需要扫描的包(含所有子包) @Service用于标注业务层组件,@Controller用于标注控制层组件(如struts中的action),@Repository用于标注数据访问组件,即DAO组件,而@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
7. @Service public class VentorServiceImpl implements iVentorService {
8. } @Repository public class VentorDaoImpl implements iVentorDao {
9. } getBean的默认名称是类名(头字母小写),如果想自定义,可以@Service(“aaaaa”)这样来指定,这种bean默认是单例的,如果想改变,可以使用@Service(“beanName”) @Scope(“prototype”)来改变。可以使用以下方式指定初始化方法和销毁方法(方法名任意): @PostConstruct public void init() {
10. }
11. @PreDestroy public void destory() {
12. }
注入方式:
把DAO实现类注入到service实现类中,把service的接口(注意不要是service的实现类)注入到action中,注
入时不要new 这个注入的类,因为spring会自动注入,如果手动再new的话会出现错误,然后属性加上
@Autowired后不需要getter()和setter()方法,Spring也会自动注入。至于更具体的内容,等对注入的方式更
加熟练后会做个完整的例子上来。
注解:
在 spring的配置文件里面只需要加上<context:annotation-config/> 和<context:component-scan base-package="需要实现注入的类所在包"/>,可以使用base-package="*"表示全部的类。
<context:component-scan base-package=”com.eric.spring”>
其中base-package为需要扫描的包(含所有子包)
在接口前面标上@Autowired和@Qualifier注释使得接口可以被容器注入,当接口存在两个实现类的时候必须指定其中一个来注入,使用实现类首字母小写的字符串来注入,如:
@Autowired
@Qualifier("chinese")
private Man man;
否则可以省略,只写@Autowired 。
@Service服务层组件,用于标注业务层组件,表示定义一个bean,自动根据bean的类名实例化一个首写字母为小写的bean,例如Chinese实例化为chinese,如果需要自己改名字则:@Service("你自己改的bean名")。
@Controller用于标注控制层组件(如struts中的action)
@Repository持久层组件,用于标注数据访问组件,即DAO组件
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
@Service
public class VentorServiceImpl implements iVentorService {
}
@Repository
public class VentorDaoImpl implements iVentorDao {
}
getBean 的默认名称是类名(头字母小写),如果想自定义,可以@Service(“aaaaa”) 这样来指定,这种
bean默认是单例的,如果想改变,可以使用@Service(“beanName”) @Scope(“prototype”)来改变。
可以使用以下方式指定初始化方法和销毁方法(方法名任意):
@PostConstruct
public void init() {
}
@PreDestroy
public void destory() {
分享到:
相关推荐
#### 二、Spring Framework 4.x的新特性与增强 **3. Spring Framework 4.0的新特性和增强** - **改进的入门体验**:Spring 4.0版本提供了更加友好的入门教程,帮助开发者更快地上手。 - **移除过时的包和方法**:...
A.2. 持久登陆(Remember-Me)表 A.3. ACL表 A.3.1. Hypersonic SQL A.3.1.1. PostgreSQL B. 安全命名空间 B.1. Web应用安全 - 元素 B.1.1. 属性 B.1.1.1. servlet-api-provision B.1.1.2. path-type B....
Struts2、iBatis和Spring 2.x是经典的Java Web开发框架组合,它们共同构建了一个灵活、可扩展且易于管理的应用程序架构。这个入门实例是针对初学者设计的,旨在帮助理解这三个框架如何协同工作。 **Struts2** 是一...
- **Chapter 2**:可能涉及Spring的基本概念和环境设置,包括Spring Boot的介绍和快速入门。 - **Chapter 3**:通常会讲解依赖注入的基本原理和实践,包括XML配置和注解驱动的DI。 - **Chapter 5**:可能深入到...
2. **入门**: - **一分钟版**:快速了解Activiti的基本操作。 - **设置**和**数据库设置**:指导如何配置Activiti环境,包括数据库连接。 - **包含Activiti jar及其依赖项**:解释如何将Activiti库集成到项目中...
======================================================================== <br>第1篇 概述 第1章 Spring概述 第2章 快速入门 第2篇 Spring核心技术 第3章 IoC容器概述 第4章 在IoC容器中...
======================================================================== <br>第1篇 概述 第1章 Spring概述 第2章 快速入门 第2篇 Spring核心技术 第3章 IoC容器概述 第4章 在IoC容器中...
Spring+3.x企业应用开发实战光盘源码(全).rar
在本篇基于注解的Spring 3.0.x MVC学习笔记中,我们将深入探讨Spring MVC在3.0版本中的变化,以及如何通过注解实现快速开发。Spring 3.0.x相较于2.5版本有着显著的改进,尤其在MVC模块上,提供了更加灵活和强大的...
【Spring 3.0 MVC 入门模板】是专为初学者设计的,旨在帮助开发者快速搭建基于Spring框架的Web应用程序。Spring MVC是Spring框架的一部分,它提供了模型-视图-控制器(MVC)架构模式的实现,使得开发Web应用更为简洁...
Spring Boot 2.x基础教程:快速入门 Spring Boot 2.x基础教程:工程结构推荐 配置详解 Spring Boot 2.x基础教程:配置文件详解 Spring Boot 2.x基础教程:2.4版本前后的多环境配置变化 Spring Boot 2.x基础教程:2.4...
在这个完整的入门教程中,你将学习如何利用Spring Security来构建安全的Web应用。 1. **身份验证**:Spring Security 提供了多种认证机制,如基于表单的登录、HTTP基本认证、OAuth2等。在3.x版本中,你可以配置`...
《Spring 3.x企业应用开发实战》是一本专注于Spring框架在企业级应用开发方面的实践指南。Spring框架是一个开源的Java平台,它提供了全面的基础架构支持,使得Java开发者可以以更加高效和优雅的方式创建企业级应用...
Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。
文档中还会详细讲述如何使用Log4j 1.2或2.x,避免使用Commons Logging,以及如何在Spring应用中通过SLF4J与Log4j或Logback结合使用,还有如何使用Java的原生日志库JUL(java.util.logging)。此外,文档还提供了对...
dubbo-sca Dubbo-2.7.6 + Spring Boot.2.0.x + Spring Cloud.F nacos nacos-spring-boot-example Nacos + Spring Boot 简单入门 nacos-spring-cloud-example Nacos + Spring Cloud 简单入门 sentinel sentinel-...
9. **OAuth2支持**: Spring Security 3.x对OAuth2有初步支持,可以学习如何构建OAuth2服务器端和客户端。 10. **自定义扩展**: 了解如何根据项目需求定制Spring Security,如自定义认证提供者、权限表达式等。 ...
基于 Spring Boot 2.X 版本的深度入门教程。快速学会 SpringMVC API 接口的编写的同时,我还想告诉你还有全局返回、全局异常、拦截器、跨域处理等等功能。快速学会 MQ 消息的发送与消费的同时,我还想告诉你 MQ 还有...
16.7.2 使用Spring Servlet API模拟对象 16.7.3 使用Spring RestTemplate测试 16.7.4 使用Selenium测试 16.8 小结 第17章 实战案例开发 17.1 论坛案例概述 17.1.1 论坛整体功能结构 17.1.2 论坛用例描述 17.1.3 主要...
以上知识点详细介绍了梦之都发布的Spring4.x参考资料的背景信息、内容概要、学习要求、以及Spring框架的主要特性。这对于想要深入理解Spring框架和进行实际开发的读者来说,是一份宝贵的参考资料。