@Resource
JSR250规范的注解, 可以和@Autowired注解一样实现自动装配功能, 默认按照组件名称进行装配的
不支持@Primary的功能,也不支持@Autowired(required = false)功能
通过name属性指定需要装配的组件id
@Inject
JSR330规范的注解,需要导入javax.inject的包,功能和@Autowired一样
但是不能使用@Autowired(required = false)功能
@Profile
spring为我们提供的可以根据当前环境,动态的激活和切换一系列组件的功能
不指定,任何环境下都能注册这个组件
指定环境了,必须在指定环境下才注册组件
默认是default环境
1. 使用命令行动态参数,在虚拟机参数位置加载 -Dspring.profiles.active = test
2. 代码的方式激活目标环境
AOP动态代理
指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式
前置通知(@Before):在目标方法运行之前运行
后置通知(@After):在目标方法运行结束之后运行, 无论方法是正常结束还是异常结束
返回通知(@AfterReturning):在目标方法正常返回之后运行 returning = 用来接收返回值的参数
异常通知(@AfterThrowing):在目标方法出现异常以后运行 throwing = 用来接收异常值的参数
环绕通知(@Around):动态代理,手动推进目标方法运行
可以在通知方法里面加入joinPointer参数,拿到接入点的传参,返回值,异常等信息
joinpointer必须出现在参数的第一位,否则将无法使用