项目中的常用注解

这里写图片描述
1、@SuppressWarnings
作用:用于抑制编译器产生告警
用法:@SuppressWarnings(“unchecked”)、@SuppressWarnings(“static-access”)等

2、@Autowired
作用:完成自动装配,可以作用于类成员变量、方法及构造函数上。
用法:当扫描到@Autowired时,会自动在容器中查找对应的bean,并装配给该对象的属性。
如何让容器找到对应的bean呢?有这样几种方法:
1)在spring的配置文件中声明bean,可以被spring找到。

    <bean id="noShardedRedisCacheUtil" class="com.maiyajf.base.redis.utils.NoShardedRedisCacheUtil">
        <property name="jedisClient" ref="jedisClient" />
    </bean>

2)用@Component、@Controller、@Service、@Reposity等注解,同时在spring配置文件中加入扫描路径,被这几个注解修饰的bean会被容器扫描到。

    <context:component-scan base-package="com.maiya.mobile">
    </context:component-scan>

3、@Resource
作用:与@Autowired一样,可以实现自动装配
也有不一样的地方,@Autowired是根据类型(byType)来注入的,如果有重写,就不好用@Autowired了。@Resource提供了byType和byName两种方式,如果有重写,可以根据name进行区分。

4、@Component、@Controller、@Service、@Reposity
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
@Controller用于标注控制层组件
@Service用于标注业务层组件
@Repository用于标注数据访问组件,即DAO组件
@Repository在项目中基本没有使用,因为通过这样的配置就无需写注解就能扫描到

    <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage"
            value="com.maiyajf.loan.*.dao,com.maiyajf.base.utils.sequence" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryOracle"></property>
    </bean>

5、@Override
作用:表示重写,增强可读性。如实现接口时,加上这个注解。

6、@Value
作用:从配置文件中读取参数,例:@Value("${push_cs_whiteList}")
需要在spring配置文件中配置

    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:/config/application.properties</value>
                <value>classpath:/config/db.properties</value>
            </list>
        </property>
    </bean>

7、@RequestMapping
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
RequestMapping注解有六个属性:
1)、 value, method;
value: 指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);
method: 指定请求的method类型, GET、POST、PUT、DELETE等;
2)、consumes,produces
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
3)、params,headers
params: 指定request中必须包含某些参数值是,才让该方法处理。
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。

8、@PathVariable
作用:用来获得请求url中的动态参数

9、@RequestBody
作用:POST或者PUT的数据是JSON格式的字符串或者XML格式,而不是普通的键值对形式。发送请求时,要设置contentType,contentType:”application/json,明确的告诉服务器发送的内容是json。由于Spring中使用的json转换用到的是jackson,所以需要引入jackson包。

    @RequestMapping("/update")
    @ResponseBody
    public ServiceResult<String> update(@RequestBody PermissionDto record, Model model) {
        record.setCreateUser(ShiroUtils.getCurrentUserName());
        ServiceResult<String> result = permissionService.edit(record);
        return result;
    }

10、@ResponseBody
作用:返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用。例如ajax请求时。

    @RequestMapping("/checkActivityInfo")
    @ResponseBody
    public AjaxResult checkEmployeeInfo(ActivityDto dto) {
        ServiceResult<Integer> result = activityService.checkEmployeeInfo(dto);
        return AjaxResult.success((Object) result.getData());
    }

11、@requestParam
作用:常用来处理简单类型的绑定

@Controller  
@RequestMapping("/pets")  
@SessionAttributes("pet")  
public class EditPetForm {  

    // ...  

    @RequestMapping(method = RequestMethod.GET)  
    public String setupForm(@RequestParam("petId") int petId, ModelMap model) {  
        Pet pet = this.clinic.loadPet(petId);  
        model.addAttribute("pet", pet);  
        return "petForm";  
    }  

    // ...  

12、@RequestHeader
作用:从Http请求头中提取指定的某个请求头.等价于HttpServletRequest.getHeader(String)

13、@CookieValue
作用:从Http请求头中的Cookie提取指定的某个Cookie

14、@Path
作用:rest风格的接口上需要加上此注释,可以写在类或方法上。
15、@PathParam
作用:rest风格的接口上获取参数,用于动态参数。
16、@queryparam
作用:rest风格的接口上获取参数,用于普通参数。
17、@Produces
作用:rest风格的接口注释代表的是一个资源可以返回的 MIME 类型。
18、@Consumes
作用:rest风格的接口注释代表的是一个资源可以接受的 MIME 类型。

19、 @Aspect
作用是把当前类标识为一个切面供容器读取
20、 @Before
标识一个前置增强方法,相当于BeforeAdvice的功能,相似功能的还有
21、 @AfterReturning
后置增强,相当于AfterReturningAdvice,方法正常退出时执行
22、 @AfterThrowing
异常抛出增强,相当于ThrowsAdvice
23、 @After
final增强,不管是抛出异常或者正常退出都会执行
24、 @Around
环绕增强,相当于MethodInterceptor
25、 @DeclareParents
引介增强,相当于IntroductionInterceptor

26、@Param
作用:这是ibatis的注解,可以用来修饰参数,作为sql的参数。需要注意的是,如果使用@Param,参数可以是多个,并且sql可以使用#{}方式也可以使用 ${}方式。如果不加@Param,参数只能是一个,并且是javaBean,并且参数不可写成 ${}方式。
27、@Lazy
作用:spring默认会在容器启动的时候初始化类,当用@Lazy修饰时,就会延迟到第一次使用时再加载。避免在启动的时候依赖的bean还未创建而产生启动错误。
28、@Async
作用:注解在类上,表示这个类中的所有方法都是异步的。注解在方法上,表示这个方法是异步的,如果类也注解了,则以这个方法的注解为准。
相关的配置:
<task:annotation-driven />配置:
executor:指定一个缺省的executor给@Async使用。

<task:executor />配置参数:
id:当配置多个executor时,被@Async(“id”)指定使用;也被作为线程名的前缀。
pool-size:
core size:最小的线程数,缺省:1
max size:最大的线程数,缺省:Integer.MAX_VALUE
queue-capacity:当最小的线程数已经被占用满后,新的任务会被放进queue里面,当这个queue的capacity也被占满之后,pool里面会创建新线程处理这个任务,直到总线程数达到了max size,这时系统会拒绝这个任务并抛出TaskRejectedException异常(缺省配置的情况下,可以通过rejection-policy来决定如何处理这种情况)。缺省值为:Integer.MAX_VALUE
keep-alive:超过core size的那些线程,任务完成后,再经过这个时长(秒)会被结束掉
rejection-policy:当pool已经达到max size的时候,如何处理新任务
ABORT(缺省):抛出TaskRejectedException异常,然后不执行
DISCARD:不执行,也不抛出异常
DISCARD_OLDEST:丢弃queue中最旧的那个任务
CALLER_RUNS:不在新线程中执行任务,而是有调用者所在的线程来执行

配置例子:

 <task:annotation-driven executor="asyncExecutor" />
 <task:executor id="asyncExecutor" pool-size="100-10000" queue-capacity="10"/>

实例:

<!-- 缺省的异步任务线程池 -->   
<task:annotation-driven executor="asyncExecutor" />  
<task:executor id="asyncExecutor" pool-size="100-10000" queue-capacity="10" />  

<!-- 处理log的线程池 -->  
<task:executor id="logExecutor" pool-size="15-1000" queue-capacity="5" keep-alive="5"/>  
@Override  
@Async("logExecutor")    //如果不指定名字,会使用缺省的“asyncExecutor”  
public void saveUserOpLog(TabUserOpLog tabUserOpLog) {  

 userOpLogDAO.insertTabUserOpLog(tabUserOpLog);  
}  

29、@ModelAttribute
作用:
1)当 @ModelAttribute 标记在处理器方法参数上的时候,表示该参数的值将从模型或者 Session 中取对应名称的属性值,该名称可以通过 @ModelAttribute(“attributeName”) 来指定,若未指定,则使用参数类型的类名称(首字母小写)作为属性名称。
2)当 @ModelAttribute 标记在方法上的时候,该方法将在处理器方法执行之前执行,然后把返回的对象存放在model属性中,属性名称可以使用 @ModelAttribute(“attributeName”) 在标记方法的时候指定,若未指定,则使用返回类型的类名称(首字母小写)作为属性名称。

30、@SessionAttributes
作用:当 @SessionAttributes标记在方法上的时候,该方法将在处理器方法执行之前执行,然后把返回的对象存放在session属性中,属性名称可以使用 @SessionAttributes(“attributeName”) 在标记方法的时候指定,若未指定,则使用返回类型的类名称(首字母小写)作为属性名称。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值