黑马程序员技术交流社区
标题: 【广州校区】【原创】Spring笔记(注解篇) [打印本页]
作者: hydee 时间: 2019-2-28 14:08
标题: 【广州校区】【原创】Spring笔记(注解篇)
IOC容器BeanFactory 接口
ApplicationContext 接口
WebApplicationContext 接口
ClasspathXmlApplicationContext 基于XML配置的IOC容器
AnnotationConfigApplicationContext 基于注解的IOC容器
XmlWebApplicationContext web工程相关的IOC容器
Bean的作用域Spring注解@Configuration 代表这是一个java配置类
@Bean 装配bean注解,name属性可以不指定,默认是方法名作为bean的名称
@Component
@ComponentScan
basePackages :定义扫描的包
basePackageClasses :定义扫描的类
includeFilters excludeFilters: includeFilters 是定义满 足过滤器( Filter )条件的 Bean 扫描, excludeFi lters 排除过滤器条件的 Bean ,它们都需要 通过 个注解@Fi lt er 去定义。
ComponentScan(basePackages = "com.springboot.chapter3 . * ”, excludeFilters = {@Filter(classes = {Service . class})})
@Autowired
首先它会根据类型找到对应的 Bean, 如果对应类型的 Bean 不是唯 的,那么它会根据其属性名称和 Bean 的名称进行匹配。如果匹配得 上,就会使用该 Bean :如果还无法匹配,就会抛出异常。
@Primar
修改优先权的注解 ,告诉 pring IoC 容器 当发现有多个同样类型的 Bean 时, 优先使用加了@Primary注解的类进行注入 。
@Quelifier 指定根据名称注入,可以单独使用,但单独使用只能作用在方法上。
@Value 既可以加载属性,以加在方法上 。
@ConfigurationProperties 将properties属性文件的属性自动配置到pojo的属性中
@PropertySource 可以单独指定需要加载的配置文件
@PropertySource(value={” classpath : jdbc. properties ”} ,ignoreResourceNotFound=true)
value可以配置多个配置文件。
@Conditional 条件装配
@Conditional(DatabaseConditiona.class)
@Profile 配置不同环境下的properties文件
@ImportResource 引入对应的xml配置文件
@ImportResource (value = {'’ cl.as spa th: spring-other . xml"})
AOP注解@Aspect 声明一个类为切面
@Before 前置通知,在方法执行之前执行。
@After 后置通知,在方法执行之后执行(无论是否发生异常)还不能访问目标方法执行的结果。
@Around 环绕通知,围绕着方法执行。
@AfterThrowing 异常通知,在方法抛出异常之后。
@AfterReturning 返回通知,在方法正常结束后返回结果之后执行,可以访问方法的返回值。
@Pointcut 定义一个切点
异常处理HandlerExceptionResolver接口的实现类由核心控制器DispatcherServlet装载。
@ExceptionHandler 定义局部异常处理方法。
注意,该注解不是加在产生异常的方法上,而是加在处理异常的方法上。
@ExceptionHandler(AuthorizationException.class)
public Object handleAuthorizationException(AuthorizationException e, HttpServletRequest request) {
logger.error(e.getMessage(), e);
if (HttpServletUtils.jsAjax(request)) {
return R.error(403, "未授权");
}
return new ModelAndView("error/403");
} 产生异常时,异常信息会被前置处理器捕获到,然后交给ExceptionHandlerExceptionResolver进行解析并分派处理。上面的handleAuthorizationException方法上加了@ExceptionHandler(AuthorizationException.class)注解,就是对AuthorizationException异常的处理方法。
@ExceptionHandler 的value属性是一个Class 数组,因此我们可以在该注解的属性中加入多个异常类.当目标方法产生异常时,将被这个方法捕捉,我们可以得到异常的实例这个异常处理只能处理当前类产生的异常,是局部的异常处理方法。
@ExceptionHandler注解定义的方法优先级问题:例如发生的是NullPointerException,但是声明的异常有RuntimeException和Exception,这时候会根据异常的最近继承关系找到继承深度最浅的那@ExceptionHandler注解方法,即标记了RuntimeException 的方法。
@ControllerAdvice 定义全局异常处理方法。
当一个类加上@ControllerAdvice注解,告诉ExceptionHandlerExceptionResolver这个类是用来处理异常的。而具体的处理异常的方法加上@ExceptionHandler注解就行了。
ExceptionHandlerMethodResolver先在处理类内部找被@ExceptionHandler 注解的方法,如果找不到,就会去被@ControllerAdvice注解的的类中的 @ExceptionHandler 注解方法。
注意: 当被 @ExceptionHandler标记为异常处理方法,不能在方法中设置别的形参。但是可以使用ModelAndView向前台传递数据。
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |