markdown
### 注解
```text
普通组件:@Component
标识一个受Spring IOC容器管理的组件
-- 持久化层组件:@Repository
标识一个受Spring IOC容器管理的持久化层组件
-- 业务逻辑层组件:@Service
标识一个受Spring IOC容器管理的业务逻辑层组件
-- 表述层控制器组件:@Controller
标识一个受Spring IOC容器管理的表述层控制器组件
```
```text
#可以注入形参/方法参数
#自动注入
@Autowired
#配合指定注入
@Qualifier(value = "beanId")
```
#### 扫描组件
```text
```
#### 组件包含和排除
```text
#可以出现多个包含/多个排除,但是不可以同时出现
#将默认use-default-filters设置为false
#将默认use-default-filters设置为ture
```
### AOP
```text
#xml配置开启自动代理
```
#### 注解类型
```text
@Before:前置通知,在方法执行之前执行
@After:后置通知,在方法执行之后执行
@AfterRunning:返回通知,在方法返回结果之后执行
@AfterThrowing:异常通知,在方法抛出异常之后执行
@Around:环绕通知,围绕着方法执行
```
#### 实例
```text
@Component
@Aspect
public class LoggerTest {
// @Before(value = "bean(serviceTest)")
@Before(value = "execution(public String net.monody.application.test.service.ServiceTest.test())")
public void beforeMethod(JoinPoint joinPoint){
System.out.println(joinPoint.getSignature());
System.out.println(joinPoint.getKind());
System.out.println(Arrays.toString(joinPoint.getArgs()));
System.out.println("切面启动");
}
@AfterReturning(value = "execution(public String net.monody.application.test.service.ServiceTest.test())",returning = "o")
public void afterMethod(Object o){
System.out.println("结果 " + o);
System.out.println("切面完成");
}
}
```
#### 优先级
```text
#优先级越高数字越小
@Order(1024)
```
*
*[返回教程主页](https://www.monody.net/p/blog-page_3.html)*
*
评论