A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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向前台传递数据。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马