zoukankan      html  css  js  c++  java
  • java 注解总结

     @Controller用于标注控制层组件

    @Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法。通俗来说,被Controller标记的类就是一个控制器,这个类中的方法,就是相应的动作。
    @RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。比如图一中,跳转到登录页面的路径就是localhost:8080/xxx-war/user/toLogin

    @Controller
    public class UserController {
    ...
    }

    @Service用于标注业务层组件
    @Service("userService")注解是告诉Spring,当Spring要创建UserServiceImpl的的实例时,bean的名字必须叫做"userService",这样当Action需要使用UserServiceImpl的的实例时,就可以由Spring创建好的"userService",然后注入给Action。
    @Service注解,其实做了两件事情:
    (1)、声明UserService.java是一个bean,这点很重要,因为UserService.java是一个bean,其他的类才可以使用@Autowired将UserService作为一个成员变量自动注入。
    (2)、UserService.java在bean中的id是"userService",即类名且首字母小写。
    Spring默认产生的bean是单例的,假如我不想使用单例怎么办,xml文件里面可以在bean里面配置scope属性。注解也是一样,配置@Scope即可,默认是"singleton"即单例,"prototype"表示原型即每次都会new一个新的出来。

    @Service("userService")
    public class UserServiceImpl implements UserService {
    ………
    }

    @Repository用于标注数据访问组件,即DAO组件
    @Repository(value="userDao")注解是告诉Spring,让Spring创建一个名字叫“userDao”的UserDaoImpl实例。
    当Service需要使用Spring创建的名字叫“userDao”的UserDaoImpl实例时,就可以使用@Resource(name = "userDao")注解告诉Spring,Spring把创建好的userDao注入给Service即可。

    @Autowired可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作,我们也要清楚,@Autowired是根据类型进行自动装配的。

    @Repository(value="userDao")
    public class UserDaoImpl extends BaseDaoImpl<User> {
    ………
    }

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

    @Component是所有受Spring 管理组件的通用形式,@Component注解可以放在类的头上,@Component不推荐使用。

    @Controller和@RestController的区别?

    官方文档:
    @RestController is a stereotype annotation that combines @ResponseBody and @Controller.
    意思是:
    @RestController注解相当于@ResponseBody + @Controller合在一起的作用。

    1)如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。

    例如:本来应该到success.jsp页面的,则其显示success.

    2)如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
    3)如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

    annotation之@Autowired、@Inject、@Resource三者区别
    1、@Autowired是spring自带的,@Inject是JSR330规范实现的,@Resource是JSR250规范实现的,需要导入不同的包

    2、@Autowired、@Inject用法基本一样,不同的是@Autowired有一个request属性

    3、@Autowired、@Inject是默认按照类型匹配的,@Resource是按照名称匹配的

    4、@Autowired如果需要按照名称匹配需要和@Qualifier一起使用,@Inject和@Name一起使用

    用途:做bean的注入时使用

        @Autowired      属于Spring的注解                 org.springframework.beans.factory.annotation.Autowired

        @Resource    不属于Spring的注解,JDK1.6支持的注解    javax.annotation.Resource

    其他

    @Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。
    @Scope注解 作用域
    @Lazy(true) 表示延迟初始化
    @Service用于标注业务层组件、 
    @Controller用于标注控制层组件(如struts中的action)
    @Repository用于标注数据访问组件,即DAO组件。
    @Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
    @Scope用于指定scope作用域的(用在类上)
    @PostConstruct用于指定初始化方法(用在方法上)
    @PreDestory用于指定销毁方法(用在方法上)
    @DependsOn:定义Bean初始化及销毁时的顺序
    @Primary:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
    @Autowired 默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:
    @Autowired @Qualifier("personDaoBean") 存在多个实例配合使用
    @Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。
    @PostConstruct 初始化注解
    @PreDestroy 摧毁注解 默认 单例  启动就加载
    @Async异步方法调用

  • 相关阅读:
    View onMeasure方法介绍
    控件的3个状态
    多个Activity之间的跳转(1)
    7种形式的Android Dialog使用举例(下)
    调用摄像头采集图像
    读取播放视频
    MATLAB
    下载数据CSV文件格式
    生成数据
    java中给当前时间添加一小时
  • 原文地址:https://www.cnblogs.com/brokencolor/p/9041021.html
Copyright © 2011-2022 走看看