`
I_conquer
  • 浏览: 24842 次
  • 性别: 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 是完全相同的。

分享到:
评论

相关推荐

    25个经典的Spring面试问答

    Spring有几种配置方式 如何用基于XML配置的方式配置Spring 如何用基于Java配置的方式配置Spring 怎样用注解的方式配置Spring 请解释Spring Bean的生命周期 Spring Bean的作用域之间有什么区别 什么是Spring inner ...

    Spring面试题含答案.pdf

    25. 解释 Spring 支持的几种 bean 的作用域 26. Spring 框架中的单例 bean 是线程安全的吗? 27. 解释 Spring 框架中 bean 的生命周期 28. 哪些是重要的 bean 生命周期方法? 你能重载它们吗? 29. 什么是 Spring ...

    Spring面试专题.pdf

    6、Spring 有几种配置方式? 7、如何用基于 XML 配置的方式配置 Spring? 8、如何用基于 Java 配置的方式配置 Spring? 9、怎样用注解的方式配置 Spring? 10、请解释 Spring Bean 的生命周期? 11、Spring Bean 的...

    Spring面试题.zip

    6、Spring 有几种配置方式? 7、如何用基于 XML 配置的方式配置 Spring? 8、如何用基于 Java 配置的方式配置 Spring? 9、怎样用注解的方式配置 Spring? 10、请解释 Spring Bean 的生命周期? 11、Spring Bean 的...

    Spring_Framework_ API_5.0.5 (CHM格式)

    Spring5 是一个重要的版本,距离Spring...随着 Java、JavaEE 和其他一些框架基准版本的增加,SpringFramework5 取消了对几个框架的支持。例如: Portlet Velocity JasperReports XMLBeans JDO Guava

    20道顶尖的Spring Boot面试题!.pdf

    4. Spring Boot 的配置文件有哪几种格式?它们有什么区别? Spring Boot 的配置文件有两种格式:.properties 和 .yml。它们的区别主要是书写格式不同。.properties 格式使用键值对来配置,而 .yml 格式使用树形结构...

    Spring+MVC数据绑定大全+

    在 Spring MVC 中,数据绑定可以通过以下几种方式实现: 1. 使用 @RequestParam 注解将 HTTP 请求中的参数绑定到方法参数中。 2. 使用 @ModelAttribute 注解将 HTTP 请求中的参数绑定到 JavaBean 对象中。 3. 使用 ...

    基于Java实现的几种定时任务的方式

    常见的几种定时任务实现 创建一个thread,然后让它在while循环里一直运行着, 通过sleep方法来达到定时任务的效果 JDK自带的Timer API算是最古老的定时任务实现方式了。Timer是一种定时器工具,用来在一个后台线程...

    Spring in Action(第2版)中文版

    16.2协同使用spring和webwork2/struts2 16.3集成spring和tapestry 16.3.1集成spring和tapestry3 16.3.2集成spring和tapestry4 16.4协同使用spring和jsf 16.4.1解析jsf管理的属性 16.4.2解析springbean 16.4.3...

    Spring in Action(第二版 中文高清版).part2

    5.3.3 使用Spring对JDBC的DAO支持类 5.4 在Spring里集成Hibernate 5.4.1 选择Hibernate的版本 5.4.2 使用Hibernate模板 5.4.3 建立基于Hibernate的DAO 5.4.4 使用Hibernate 3上下文会话 5.5 Spring和Java...

    Spring in Action(第二版 中文高清版).part1

    5.3.3 使用Spring对JDBC的DAO支持类 5.4 在Spring里集成Hibernate 5.4.1 选择Hibernate的版本 5.4.2 使用Hibernate模板 5.4.3 建立基于Hibernate的DAO 5.4.4 使用Hibernate 3上下文会话 5.5 Spring和Java...

    springmybatis

    MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个...

    java外卖系统源码-auth0-spring-security-api:一个JavaSpring库,允许您将Auth0与SpringSecu

    java外卖系统源码Auth0...结合使用,那么您可能会考虑以下几种不同的架构: 1)。 您可以将 SPA 放在使用该库的同一个 Spring Boot 应用程序中(将您的 SPA 代码放在 /src/main/resources 下,就像对待任何 Spring Boot

    springboot之yml配置文件信息加密.docx

    使用 @RunWith(SpringJUnit4ClassRunner.class) 和 @SpringBootTest(classes= TrustWebApplication.class) 注解来指定 Spring Boot 的启动类。使用 @Autowired 注解来注入 StringEncryptor 接口,使用 encryptPwd() ...

    leetcode下载-SSM-Examples:SSM-示例

    Mvc对静态资源处理的几种方式 downloader,一个支持断点和分段下载的多线程下载工具 flush-tool,批量刷新工具,支持按时间间隔和容量同时批量刷新 java-snippet,Java学习笔记,包括算法题(leetcode),Java并发包...

    Java 基础核心总结 +经典算法大全.rar

    关于 null 的几种处理方式大小写敏感 null 是任何引用类型的初始值 null 只是-种特殊的值使用 Null-Safe 方法null 判断 关于思维导图 Java.IO Java.lang Java.math Java.net Java 基础核心总结 V2.0 IO 传统的 ...

    report 开源的访问层中间件,基于java平台

    以及访问控制层的使用,简化控制层的繁琐代码,简化spring mvc的配置,剥离了请求控制层前的一系列操作,极大的提高项目开发速度,降低学习开发的成本。report项目请求通道采用责任链模式设计,扩展性极强,流程完全...

    你的接口,真的能承受高并发吗?

    XML中根据service及方法名配置切面,来开启事务(前几年用的频率较高,现在基本很少用) @Transactional注解开启事务(使用频率最高) 采用spring的事务模板(截图中的方式,几乎没什么人用) 我们先不纠结为什么使用第三种,...

    springmvc 发送ajax出现中文乱码的解决方法汇总

    ,研究了一下,有几种解决办法。  我使用的是sping-web-3.2.2,jar  方法一:  在@RequestMapping里面加入produces = “text/html;charset=UTF-8” @RequestMapping(value = "/configrole", method = Request...

    javaSE代码实例

    16.4.9 防止错误的使用wait、notify、notifyAll方法 371 16.5 获取当前正在运行的线程 372 16.6 volatile关键字的含义与使用 372 16.7 小结 373 第17章 高级线程开发 374 17.1 线程池的使用 374 17.1.1...

Global site tag (gtag.js) - Google Analytics