java中的各种注解

SSM框架注解

Spring中的注解:详见:SSM框架注解总结

Spring中的注解:
@Component:把资源对象交给spring来管理,相当于在xml中配置一个bean,此注解使用在实体bean的头部,等价于XML中配置的“<bean id="" class="">”标签。 
@Controller、 @Service、 @Repository:都是针对@Component注解的衍生注解,他们的作用及属性都是一样的,等价于XML中配置用于注入数据的“<property name="" ref=""> <property name="" value="">”标签,他们只不过是提供了更加明确的语义化。  
	 -@Controller:一般用于表现层的注解。 
	 -@Service:一般用于业务层的注解。 
	 -@Repository:一般用于持久层的注解。 
@Autowired:自动按照类型注入。当使用注解注入属性时,set方法可以省略。它只能注入其他bean类型。当有多个类型匹配时,使用要注入的对象的变量名称作为bean的id,在spring容器查找,找到了也可以注入成功,如果找不到就会报错。 
@Qualifier:在自动按照类型注入的基础之上,再按照Bean的id注入。它在给字段注入时不能独立使用,必须和@Autowire一起使用,但是给方法参数注入时,可以独立使用。
       属性:
              value:指定bean的id。
@Resource:直接按照Bean的id注入。它也只能注入bean类型。 
       属性: 
              name:指定bean的id。
@Value:注入基本数据类型和String类型数据的 
       属性: 
              value:用于指定值    
@Configuration:用于指定当前类是一个spring配置类,当创建容器时会从该类上加载注解。获取容器时需要使用AnnotationApplicationContext(有@Configuration注解的类.class)。   
@ComponentScan:用于指定spring在初始化容器时要扫描的包。作用和在spring的xml配置文件中的“ <context:component-scan base-package="cn.study"></context:component-scan>”
         属性: 
                Value(单独使用可省略):用于指定要扫描的包。和标签中的basePackages属性作用一样。 
@Bean:该注解只能写在方法上,将方法的返回值作为一个bean,并且放入spring容器。id就是name的属性的值 
      属性: 
             name:给当前@Bean注解方法创建的对象指定一个名称(即bean的id)。
@PropertySource:
用于加载.properties文件中的配置。例如我们配置数据源时,可以把连接数据库的信息写到properties配置文件中,就可以使用此注解指定properties配置文件的位置。 
       属性: 
              value[]:用于指定properties文件位置。如果是在类路径下,需要写上classpath:
@Import:用于导入其他配置类,在引入其他配置类时,其他类上可以不用再写@Configuration注解。当然,写上也没问题。 
        属性: 
               value[]:用于指定其他配置类的字节码。 
@Aspect: 
         指定当前类是通知类,此注解使用在类上。

SpringMvc中的注解:
@Controller:
        Spring的Controller是Singleton的。这就意味着会被多个请求线程共享。因此,我们将控制器设计成无状态类。

@RequestMapping:
         在类前面定义,则将url和类绑定;(如果该类里只有单个方法的话可以这样写,访问该地址直接调用该方法):
@PathVariable:
         与 Rest风格(占位符)的映射一起使用获取URL路径的参数数据:
@RequestParam:

 常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String--> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值:
用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容,提交方式GET、POST: GET模式下,这里使用了@PathVariable绑定输入参数,非常适合Restful风格。因为隐藏了参数与路径的关系,可以提升网站的安全性,静态化页面,降低恶意攻击风险。POST模式下,使用@RequestBody绑定请求对象,Spring会帮你进行协议转换,将Json、Xml协议转换成你需要的对象。
该注解有三个属性: value、required、defaultValue:value用来指定要传入值的id名称、 required用来指示参数是否必须绑定、defaultValue用来指定在前端没有传值的情况下限定默认的值。
@CookieValue:使用方法同@RequestParam,只不过它是获取cookie的值。
@ResponseBody:
        当一个处理请求的方法标记为@ResponseBody时,表示该方法需要输出其他视图(json、xml),springmvc会通过默认的json转化器转化输出。
@RestController:
         有时如果在一个Contoller中所有的方法都是用来响应json格式数据的,那么如果有多个方法,就需要在多个方法上使用@ResponseBody,这样太麻烦,springmvc提供了一个@RestController,将该注解使用在Controller类上,那么该controller中的所有方法都默认是响应json格式的数据了。

#Mybatis框架常用注解总结:
@Mapper:作用是为了把mapper这个DAO交给Spring容器管理,一般不用加,我们在XXXMapper.xml中的namespace中已经指定过了。
@Param:
        使用@Param注解为相应的查询接口传递值,但是具体SQL语句中的参数要与@Param中定义的参数保持一致。

SpringBoot注解

1、@SpringBootApplication

这是 Spring Boot 最最最核心的注解,用在 Spring Boot 主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力。

其实这个注解就是 @SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan 这三个注解的组合,也可以用这三个注解来代替 @SpringBootApplication 注解。
@Configuration 等同于spring的XML配置文件;使用Java代码可以检查类型安全。

@EnableAutoConfiguration 自动配置。

@ComponentScan 组件扫描,可自动发现和装配一些Bean。

@Component可配合CommandLineRunner使用,在程序启动后执行一些基础任务。

@RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器。

@Autowired自动导入。

@PathVariable获取参数。
2、@Repository

用于标注数据访问组件,即DAO组件。

3、@Service

用于标注业务层组件。

4、@RestController

用于标注控制层组件(如struts中的action),包含@Controller和@ResponseBody

5、@ResponseBody

表示该方法的返回结果直接写入HTTP response body中

一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析

为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。

6、@Component

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

7、@ComponentScan

组件扫描。相当于,如果扫描到有@Component @Controller @Service等这些注解的类,则把

这些类注册为bean。

8、@Configuration

指出该类是 Bean 配置的信息源,相当于XML中的,一般加在主类上。

9、@Bean

相当于XML中的,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理。

10、@EnableAutoConfiguration

让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置,一般加在主类上。

11、@AutoWired

byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。
当加上(required=false)时,就算找不到bean也不报错。

12、@Qualifier

当有多个同一类型的Bean时,可以用@Qualifier("name")来指定。与@Autowired配合使用

13、@Resource(name="name",type="type")

没有括号内内容的话,默认byName。与@Autowired干类似的事。

14、@RequestMapping

RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

该注解有六个属性:

params:指定request中必须包含某些参数值是,才让该方法处理。

headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。

value:指定请求的实际地址,指定的地址可以是URI Template 模式

method:指定请求的method类型, GET、POST、PUT、DELETE等

consumes:指定处理请求的提交内容类型(Content-Type),如application/json,text/html;

produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回

15、@RequestParam
用在方法的参数前面。
@RequestParam String a =request.getParameter("a")。

16、@PathVariable
路径变量。参数与大括号里的名字一样要相同。
RequestMapping("user/get/mac/{macAddress}")
public String getByMacAddress(@PathVariable String macAddress){
  //do something;
  }

1 @data 注解

添加@Data注解可以不用书写 getter,setter方法, toString方法 hashCode方法 equals方法

2 @ToString(callSuper = true) 注解

添加@ToString就是节省了ToString方法

3 @EqualsAndHashCode(callSuper=true) 注解

  1. 此注解会生成equals(Object other) 和 hashCode()方法。
  2. 它默认使用非静态,非瞬态的属性
  3. 可通过参数exclude排除一些属性
  4. 可通过参数of指定仅使用哪些属性
  5. 它默认仅使用该类中定义的属性且不调用父类的方法
  6. 可通过callSuper=true解决上一点问题。让其生成的方法中调用父类的方法。

(@data @ToString(callSuper = true) @EqualsAndHashCode(callSuper=true) 这三个注解通常使用在实体类中 )

4 @component(“budget.payment.QueryPaymentListService”)

(把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="useService" class="com.gyf.service.QueryPaymentListServiceImpl"/>)

@component 一般用在Service层中的实现类头上

5 @Service 注解

@Service(“userService”)注解是告诉Spring,当Spring要创建UserServiceImpl的的实例时,bean的名字必须叫做"userService",这样当Action需要使用UserServiceImpl的的实例时,就可以由Spring创建好的"userService",然后注入给Action。

@Service 一般用在Service层中的实现类头上

6 @Slf4j 注解

注解在类上;为类提供一个 属性名为log 的 log4j 日志对像

@Slf4j 一般用在Service层中的实现类头上

7 @SimpleDAO 注解

8 @Repository(budget.payment.paymentDAO) 注解

@Repository(value=“userDao”)注解是告诉Spring,让Spring创建一个名字叫“userDao”的UserDaoImpl实例。

当Service需要使用Spring创建的名字叫“userDao”的UserDaoImpl实例时,就可以使用@Resource(name =
“userDao”)注解告诉Spring,Spring把创建好的userDao注入给Service即可。

@Repository 注解 一般用在dao中

9 @Autowired 注解

spring可以自动帮你把Bean里面引用的对象的setter/getter方法省略,它会自动帮你set/get。
@Autowired注释进行自动注入时,spring容器中匹配的候选Bean数目必须有且仅有一个。
当找不到一个匹配的Bean时,spring容器将抛出BeanCreationException异常,并指出必须至少拥有一个匹配的Bean。
如果spring容器中拥有多个候选Bean,spring容器在启动时也会抛出BeanCreationException
这个时候就可以借助@Qualifier注释指定注入Bean的名称,这样@Autowired遇到多个候选Bean的问题也就解决了

@Autowired 一般用在Service层中的实现类中

10 @Resource注解

@Resource分两种情况 : 在不传参数或者传入空参的情况下 , @Resource默认根据注入bean的字段名来寻找bean
(若放在function上 , 如果该function为set方法, 则bean名称解析为set对应的字段名 , 如果不是set方法 ,
则bean解析为function的方法名) , 如果找不到 , 在根据类型来寻找对应的bean, 如果还找不到 , 抛出异常 ,
如果找不到与字段名相匹配的bean , 但是类型匹配的却有多个 , 也抛出异常 ; 在传入确定参数的情况下 ,
@Resouce或根据传入的name值来寻找这个名称的bean , 如果找不到则抛出异常 , 或者根据type值来寻找这个类型的bean ,
也可以同时指定name和type.

@Resource注解 一般用在service中的 引用接口中

11 @Qualifier 注解

@Qualifier 可以写在field 或者function传入参数的参数类型前面 , 用来指定注入bean的名称
,如果不指定value, 那么默认是空名称, 也是可以编译通过的 , 但是无法匹配到对应的bean
(以两个同一interface的实现注入不同名称的bean来测试 , 如果本身只有一个对应的bean , 或者仅仅通过@Resource 或
@Autowired就可以找到对应的bean , 就无法测试出来@Qualifier的效果了 ) ,所以一般情况下 ,
使用@Qualifier都需要传入value参数 , 指定bean的名称 ,

@Qualifier 注解 一般用在service中的 引用Dao中

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值