`
I_conquer
  • 浏览: 25642 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

spring的几种注解的用法

阅读更多
1、@controller 控制器(注入服务)
2、@service 服务(注入dao)
3、@repository dao(实现dao访问)
4、@component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>)
  @Component,@Service,@Controller,@Repository注解的类,并把这些类纳入进spring容器中管理。
下面写这个是引入component的扫描组件
<context:component-scan base-package=”com.mmnc”>   

其中base-package为需要扫描的包(含所有子包)
       1、@Service用于标注业务层组件
       2、@Controller用于标注控制层组件(如struts中的action)
       3、@Repository用于标注数据访问组件,即DAO组件.
       4、@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。   
           @Service public class UserServiceImpl implements UserService { }
           @Repository public class UserDaoImpl implements UserDao { } getBean的默认名称是类名(头字母小写),如果想自定义,可以@Service(“***”)               这样来指定,这种bean默认是单例的,如果想改变,可以使用@Service(“beanName”)
           @Scope(“prototype”)来改变。可以使用以下方式指定初始化方法和销毁方法(方法名任意): @PostConstruct public void init() { }

spring 默认scope 是单例模式
这样只会创建一个Action对象
每次访问都是同一个Action对象,数据不安全
struts2 是要求 每次次访问 都对应不同的Action
scope="prototype" 可以保证 当有请求的时候 都创建一个Action对象

当我们在一个ACTION类里面写很多个方法的时候(其实是一种按功能划分模块编程的思想),每个方法的返回状态可能不一样,如果ACTION中不@Scope("prototype"),有可能报找不到XXXACTION的错误!写上这个就表示每次请求都重新创建一个ACTION,与SINGALON对应,俗称“多例”。

我们项目中用@Component标注了action,我改为@Controller也可以用,于是我查了一下资料,原来:
Spring 2.5 在 @Repository的基础上增加了功能类似的额外三个注解:@Component、@Service、@Constroller,它们分别用于软件系统的不同层次:

@Component 是一个泛化的概念,仅仅表示一个组件 (Bean) ,可以作用在任何层次。
@Service 通常作用在业务层,但是目前该功能与 @Component 相同。
@Constroller 通常作用在控制层,但是目前该功能与 @Component 相同。
通过在类上使用 @Repository、@Component、@Service 和 @Constroller 注解,Spring会自动创建相应的 BeanDefinition 对象,并注册到 ApplicationContext 中。这些类就成了 Spring受管组件。这三个注解除了作用于不同软件层次的类,其使用方式与 @Repository 是完全相同的。

分享到:
评论

相关推荐

    Spring demo 自动检测注解

    当我们在类的属性或方法上使用这个注解时,Spring会自动寻找匹配类型的bean并将其注入。这种方式比传统的XML配置更为便捷,因为它减少了手动编写配置文件的负担。 自动检测注解的工作机制基于以下几点: 1. **类型...

    spring3注解详细

    在使用 @Autowired 时,需要在配置文件中添加 `&lt;bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" /&gt;` 来启用注解处理。 ### 1.1 多个同类型 Bean 的处理 当有多...

    spring aop注解版

    Spring AOP的注解版主要包括以下几个核心注解: 1. `@Aspect`:标记一个类为切面类,这个类将包含切点和通知。 2. `@Before`:前置通知,表示在目标方法执行之前运行的代码。 3. `@After`:后置通知,表示在目标...

    Spring通过注解实现IOC

    在Spring中,主要通过以下几种注解来实现IOC: 1. `@Component`:这是最基础的注解,用于标记一个类为Spring的Bean。将这个注解添加到类上,Spring就会自动扫描并管理这个类的实例。例如: ```java @Component ...

    Struts2+spring注解配置

    Spring 使用注解配置主要是为了简化 Bean 的定义,包括但不限于以下几种: 1. `@Component`, `@Service`, `@Repository`, `@Controller` 这些注解用于标记组件类,它们分别对应不同的服务层角色,Spring 会自动扫描...

    spring4注解

    尽管本节原计划通过编写一些示例来详细介绍常用的注解用法,但在网络资源中已经有很多优秀的教程和示例可供参考,这里直接引用并整理其中的关键部分。 #### 四、注解配置说明 ##### 4.1 注册注解处理器 Spring...

    关于spring boot中几种注入方法的一些个人看法

    Spring Boot 中的几种注入方法 在 Spring Boot 中,注入是一种非常重要的机制,用于将 bean 对象注入到其他 bean 对象中,以便实现松耦合和高内聚的设计目标。下面我们将对 Spring Boot 中的几种注入方法进行详细的...

    基于注解的Spring JdbcTemplate

    基于注解的Spring JdbcTemplate进一步增强了这种便利性,允许开发者直接在方法上使用注解来指定SQL语句。 ### 2. 注解使用 Spring JdbcTemplate的注解支持主要包含以下几个关键注解: - `@Query`: 用于定义SQL...

    Spring基于注解实现AOP

    除了`@Before`,Spring还提供了其他几种通知类型: 1. `@After` - 后置通知,无论方法是否抛出异常都会执行。 2. `@AfterReturning` - 返回后通知,只在方法正常返回时执行。 3. `@AfterThrowing` - 异常后通知,当...

    spring annotation注解

    在使用 @Autowired 注解时,需要注意以下几点: * @Autowired 注解只能用于 Spring 框架中。 * @Autowired 注解只能对成员变量、方法和构造函数进行标注。 * @Autowired 注解不能用于 final 成员变量。 * @...

    spring-aop和注解的实例

    Spring AOP通过以下几种方式实现切片: 1. **定义切面(Aspect)**:在Spring中,切面通常由一个带有`@Aspect`注解的类表示。这个类可以包含通知方法,这些方法会在指定的连接点执行。 2. **定义通知(Advice)**...

    使用Spring的注解方式实现AOP入门

    在Spring中,我们可以通过以下几种注解来实现AOP: 1. `@Aspect`:这个注解用于标记一个类为切面。切面类通常包含通知和切点定义。 2. `@Before`:此注解用于定义前置通知,即在目标方法执行前执行的代码。例如,...

    spring学习:依赖注入的几种方式讨论

    在类或方法上使用`@Autowired`注解可以自动匹配并注入依赖。例如: ```java @Service public class Service { @Autowired private Repository repository; } ``` `@Service`是Spring的组件注解,标记此类为一个...

    使用Spring的注解方式实现AOP

    在Spring中,注解方式实现AOP主要包括以下几个关键注解: 1. `@Aspect`:这个注解用于定义一个切面类,该类包含了若干个通知(advice)。 2. `@Before`:在目标方法执行前执行的通知,相当于传统的“前置通知”。 3...

    mybatis和spring整合方式-带注解

    本文主要介绍一种常见的整合方式——使用`MapperFactoryBean`并结合注解的方式。 #### 二、目录结构与组件说明 ##### 1. 目录结构说明 本示例以一个简单的图书管理系统为例,展示如何通过`MapperFactoryBean`来...

    Spring3 注解初级实例

    在Spring3中,注解的使用主要包括以下几个方面: 1. **组件扫描(Component Scanning)**:通过`@Component`、`@Service`、`@Repository`和`@Controller`等注解,Spring能够自动发现和管理bean。例如,`@Component`...

    Spring Ioc 注解 依赖注入

    下面介绍几种常用的依赖注入相关的注解: - **@Component**:用于标记一个普通的Java类为Spring管理的Bean。 - **@Service**:通常用于标记业务层的组件。 - **@Repository**:用于标记数据访问层(DAO层)的组件。...

    SpringAOP注解特棒例子

    在Spring AOP中,我们主要会用到以下几个注解: 1. `@Aspect`:这个注解用于标记一个类作为切面。切面类通常包含一系列的通知方法(advice),这些方法会在特定的连接点(join point)执行。 2. `@Before`:这个...

    实现Spring那样的Ioc注解装配

    在Spring中,注解装配是DI的一种便捷方式,它允许我们使用注解(如@Autowired、@Qualifier等)来声明和管理依赖。现在,我们将探讨如何在自己的代码中实现类似的功能。 首先,我们需要创建一个IoC容器,这个容器将...

    Spring + Xfire + 注解方式

    在使用注解的方式时,开发者可以在类或方法上添加特定的注解(如@Service、@Controller、@Repository等Spring注解,以及@WebService、@WebServiceRef等Xfire注解),从而让Spring和Xfire自动识别并处理这些服务。...

Global site tag (gtag.js) - Google Analytics