关于@Component注解的含义说明_第1页
关于@Component注解的含义说明_第2页
关于@Component注解的含义说明_第3页
关于@Component注解的含义说明_第4页
关于@Component注解的含义说明_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第关于@Component注解的含义说明目录一、注解分类二、@Component注解含义三、基于@Component扩展的注解四、component的扫描组件五、方法初始化和销毁1.@PostConstruct注解2.@PreDestroy注解3.示例

一、注解分类

1、@controller:controller控制器层(注入服务)

2、@service:service服务层(注入dao)

3、@repository:dao持久层(实现dao访问)

4、@component:标注一个类为Spring容器的Bean,(把普通pojo实例化到spring容器中,相当于配置文件中的beanid=""class=""/)

二、@Component注解含义

@Component:标注Spring管理的Bean,使用@Component注解在一个类上,表示将此类标记为Spring容器中的一个Bean。

三、基于@Component扩展的注解

@Repository:

@Repository本身是基于@Component注解的扩展,被@Repository注解的POJO类表示DAO层实现,从而见到该注解就想到DAO层实现,使用方式和@Component相同;

@Service:

@Service本身是基于@Component注解的扩展,被@Service注解的POJO类表示Service层实现,从而见到该注解就想到Service层实现,使用方式和@Component相同;

@Controller:

@Controller本身是基于@Component注解的扩展,被@Controller注解的类表示Web层实现,从而见到该注解就想到Web层实现,使用方式和@Component相同;

Tips:使用@Component,@Service,@Controller,@Repository注解的类,表示把这些类纳入到spring容器中进行管理,同时也是表明把该类标记为Spring容器中的一个Bean。

四、component的扫描组件

下面写这行配置是引入component的扫描组件

context:component-scanbase-package=”com.mmnc”

其中base-package为指定需要扫描的包(含所有子包),扫描被@Service、@Controller、@Repository、@Component等注解标注的Java类,将其扫描注入到Spring容器,注入成Bean:

@Service用于标注业务层组件

@Controller用于标注控制层组件(如struts中的action)

@Repository用于标注数据访问组件,即DAO组件.

@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注,标识为一个Bean。

五、方法初始化和销毁

从JavaEE5规范开始,Servlet增加了两个影响Servlet生命周期的注解:@PostConstruct和@PreConstruct,这两个注解被用来修饰一个非静态的void()方法,而且这个方法不能有抛出异常声明,标注方法的初始化和销毁,当你需要在系统启动时提前设置一下变量或者设置值操作时,可以使用@PostConstruct注解进行项目启动时设置来完成,当你需要处理关闭资源或者发送通知相关操作时可以使用@PreConstruct完成。

1.@PostConstruct注解

被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的inti()方法。被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。

2.@PreDestroy注解

被@PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的destroy()方法。被@PreDestroy修饰的方法会在destroy()方法之后运行,在Servlet被彻底卸载之前。

加载顺序如图:

在Spring中可以使用以下方式指定初始化方法和销毁方法(方法名任意):

//对象创建并赋值之后调用

@PostConstruct

publicvoidinit(){

System.out.println("对象创建并赋值之后调用...");

}

//容器移除对象之前

@PreDestroy

publicvoiddetory(){

System.out.println("容器移除对象之前执行...");

}

3.示例

@Controller

@Lazy(false)

publicclassServletInit{

@Autowired

privatePCASigninServletpcaSigninServlet;

@Autowired

privatePCASignoutServletpcaSignoutServlet;

@Autowired

privatePCAInitServletpcaInitServlet;

@Autowired

privatePCALogoutServletpcaLogoutServlet;

@Autowired

privatePCAInfoServletpcaInfoServlet;

@Autowired

privateHelloServlethelloServlet;

@Autowired@Qualifier("handler")

privateWebAppContextwebapp;

@PostConstruct

voidinit(){

Serverserver=newServer(8848);

ServletContextHandlercontextHander=newServletContextHandler(ServletContextHandler.SESSIONS);

contextHander.setContextPath("/");

System.out.println("startinit");

HandlerCollectionhc=newHandlerCollection();

hc.setHandlers(newHandler[]{webapp,contextHander});

server.setHandler(hc);

System.out.println("addServlet/hello");

contextHander.addServlet(newServletHolder(helloServlet),"/hello");

contextHander.addServlet(newServletHolder(pcaSigninServlet),"/pca/signin");

contextHander.addServlet(newServletHolder(pcaSignoutServlet),"/pca/signout");

contextHander.addServlet(newServletHolder(pcaInitServlet),"/pca/init");

contextHander.addServlet(newServletHolder(pcaLogoutServlet),"/pca/logout");

contextHander.addServlet(newServletHolder(pcaInfoServlet),"/pca/info");

System.out.p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论