Spring框架 注解

注解配置

Spring不会自动寻找注解,需主动声明需要在哪些包中寻找注解
修改配置文件:
添加工作空间:xmlns:context和xsi:schemaLocation
声明注解在的包:

<context:component-scan base-package="包名,包名"/>

常用注解

将对象交予容器管理

①@Component("") 相当于<bean/>,括号内为该对象在容器中的id,默认首字母小写
②@Service与@Component功能相同,一般用于ServiceImpl上
③@Respoitory与@Component功能相同,一般用于数据访问层
④@Controller与@Component功能相同,一般用于控制器,被SpringMVC容器管理

例,通过.getBeanDefinitionNames()方法检测:
在这里插入图片描述可以发现,除了我们自己用注解交给容器管理的对象外,还有一些扫描注解依赖的对象

注入属性值

⑤@Resource java中的注解,默认按照byName,若无名称,则按照byType
使用在属性之上,并且不需要属性的set方法,建议把属性名称和引用名相同,提高寻找效率
⑥@Autowired spring的注解,默认按照byType,并且不需要属性的set方法
⑦@Value()获取properties文件中的内容
例:
在这里插入图片描述

注解基于Aspect实现 AOP

前提:

<!-- 设置注解完成AOP -->
 <aop:aspectj-autoproxy></aop:aspectj-autoproxy>

①对于切点,在方法前加@Pointcut(“execution(* 包名.类名.方法名())”),相当于<pointcut/>
②前置通知,通知方法类前加@Aspect与@Component,具体方法前加@Before(“切点的包名.类名.方法名()”)
③其他同前置,后置(@After),异常(@AfterThrowing),环绕(@Around)
若环绕和前后置同时配置,环绕一般在前置/后置之前

Ps:此处需要注意的是,Spring AOP默认使用的是JDK动态代理,而我们设置的通知方法类若不是继承自接口的话,需修改动态代理方式为CGLIB:
需要在配置文件进行修改:

<aop:aspectj-autoproxy proxy-target-class="true"/>
<!--true:cglib动态代理,false:jdk动态代理(默认值,此时需要接口来获取代理对象)-->

例:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值