先说一下@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节点配置组件时一样的
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
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/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsdhttp://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"
default-default-lazy-init="true">
<!-- 使用annotation定义事务-->
<tx:annotation-driventransaction-manager="transactionManager" proxy-target-class="true"/>
<!--使用annotation 自动注册bean,并检查@Required,@Autowired的属性已被注入base-package为需要扫描的包(含所有子包)-->
<context:component-scanbase-package="com" />
</beans>
@Autowired
可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。
action控制层
@Controller("proc")
public class ProductsAction {
@Autowired
// @Qualifier("productsService")
private ProductsService productsService;
}
@Controller应用引用的proc就是struts.xml里面定义的namespace
ProductsService该类为业务层接口
业务层
@Service
@Transactional
public class ProductsServiceImpl implements ProductsService {
@Autowired
private ProductsDao productsDao;
……
}
ProductsDao为持久层接口
@Repository
public class ProductsDaoImpl implementsProductsDao {
……
}
@Resource
@Resource 的作用相当于 @Autowired,只不过
@Autowired 按 byType 自动注入,面 @Resource 默认按 byName
自动注入罢了。@Resource 有两个属性是比较重要的,分别是 name 和 type,Spring 将
@Resource 注释的 name 属性解析为 Bean 的名字,而 type 属性则解析为 Bean 的类型。所以如果使用
name 属性,则使用 byName 的自动注入策略,而使用 type 属性时则使用 byType 自动注入策略。如果既不指定 name 也不指定 type 属性,这时将通过反射机制使用 byName 自动注入策略。
Resource 注释类位于 Spring 发布包的 lib/j2ee/common-annotations.jar 类包中,因此在使用之前必须将其加入到项目的类库中。
@PostConstruct 和@PreDestroy
标注了 @PostConstruct 注释的方法将在类实例化后调用,而标注了 @PreDestroy 的方法将在类销毁之前调用。
@Qualifier
这里说一下@Qualifier("name")这个方法,这里的name为bean类名
@Service
@Transactional
public class ProductsServiceImpl implements ProductsService {
@Autowired
@Qualifier("prodBuliderImpl")
private TreeBuilder<TabProducts> prodBulider;
……
}
TreeBuilder接口
public interface TreeBuilder<T> {
……
}
ProdBuliderImpl 类
@Component
public class ProdBuliderImpl implements TreeBuilder<TabProducts>{
……
}
分享到:
相关推荐
【Spring注释详解】 在Java开发领域,Spring框架以其强大的功能和灵活性著称。自Spring 2.5版本起,Spring引入了注释驱动的配置,使得开发者可以通过在类和方法上添加注释来替代传统的XML配置文件。这种方式极大地...
在这个"Spring注释包"中,我们将深入探讨Spring框架如何通过注释来简化开发,提高代码的可读性和可维护性。 首先,让我们了解一下Spring中的核心注解: 1. `@Component`:这是最基础的组件注解,用于标记一个类为...
本项目“node模板以及类似spring注释注册控制器.zip”展示了一种方法,它借鉴了Spring框架中的注解思想,用于Node.js的应用中。下面将详细阐述其中涉及的关键知识点。 1. **Node.js**: Node.js是一个基于Chrome V8...
Spring 源码注释中文版的提供,使得开发者能够更加深入地理解 Spring 的工作原理,无需经过复杂的编译过程,可以直接阅读源码注释来学习。 Spring 框架主要由以下几个关键模块组成: 1. **Core Container(核心...
花了些时间做了一个实验,彻底弄懂了spring Annotation注入的方式。凡带有@Component,@Controller,@Service,@Repository 标志的等于告诉Spring这类将自动产生对象,而@Resource则等于XML配置中的ref,告诉spring此处...
这份"spring 源码中文注释"包含了对Spring框架源码的详细解读,对于理解其工作原理、优化代码以及定制化开发具有重要意义。 首先,我们来看看Spring的核心组件——IoC容器。IoC容器是Spring的核心,它负责管理对象...
这份"spring源码(注释+测试版)"提供了Spring框架的源代码,带有注释和测试用例,对于开发者深入理解Spring的工作原理非常有帮助。 1. **spring-core**:这是Spring框架的基础模块,包含了核心的工具类和资源处理...
这个压缩包文件中的"spring源码 中英文注释"为开发者提供了一个深入理解Spring框架内部工作原理的机会。通过阅读源码和注释,我们可以更清晰地了解Spring如何管理依赖注入、AOP(面向切面编程)、事务管理、上下文...
在"spring 编译后源码(有注释)"这个压缩包中,你将获得 Spring 框架 5.0.2.RELEASE 版本的源代码,这些源码已经包含了中文注释,对于学习和理解 Spring 框架的工作原理极其有价值。 1. **IoC(Inversion of ...
【Spring注解使用详解】 Spring框架自2.5版本开始,引入了注解配置,使得开发者可以在不依赖XML配置文件的情况下实现Bean的定义和依赖注入。注解配置因其简洁、直观的特点,逐渐成为主流的配置方式。在本文中,我们...
注解和注释以及Spring和SpringMVC常用的注解 1.两者区别 注解 :参与代码编译,以@开头的。它是给应用程序看的,单独使用注解毫无意义,一定要跟工具一起使用,这个所谓的工具实际就是能读懂注解的应用程序 注释 :...
此源码配合我的另一个资源《Tom_深入分析Spring源码》这个下载的资源一起使用,里面注释的很详细,中文注释方便了很多英语不好的童鞋,跟着文档看着源码学spring源码效率很高,希望能帮助大家 《Tom_深入分析Spring...
新版 spring 5 中文注释源码,关键源码位置都有中文注释,方便阅读源码 spring源码解读 Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它允许我们实现代码的解耦,专注于业务逻辑,而将横切关注点如日志、事务管理等分离出来。AOP通过定义切面(Aspects)、通知(Advisors)、切入点...
这个"最全中文注释版Spring4源码"提供了一个深入了解Spring内部工作原理的绝佳机会,尤其是对于那些希望提升自己技能,从底层理解如何管理Bean、处理上下文以及构建Web应用程序的开发者来说。 首先,我们要关注的是...
Spring注释配置:Unexpected exception parsing XML document from class path resource [beans-annotation.xml]-附件资源
1、Spring概述 2、一切从bean开始 3、俯瞰Spring架构设计 4、Spring源码下载 二阶段 1、什么是IOC/DI 2、SpringIOC体系结构 3、源码分析-IOC容器的初始化 4、源码分析-IOC容器的依赖注入 5、源码分析-IOC容器的高级...
在这个带有中文注释的maven版本中,我们能够更方便地理解和学习Spring的源码。 Maven 是一个项目管理和综合工具,它帮助开发者管理项目依赖、构建流程以及提供了一种标准化的项目结构。在Spring Framework 5.1.x的...
Spring配置 Spring 配置 映射 加注释!!!!Spring配置 Spring 配置 映射 加注释!!!!
spring-core-4.2.5.RELEASE-javadoc.jar (spring4.2.5的文档,即为spring的源码注释),导入到eclipse中,就可以查看spring的源码注释,当调用spring的类或者方法时就会显示注释信息。