介绍:SpringBoot是Spring的成员,核心是IOC。
1.JavaConfig
使用Java作为xml配置文件的替代,是配置文件spring容器的纯Java方式,在Java类中可以常见对象,并加入到spring容器中。
注解:
@Configuration
放在类上,表示这个类作为配置文件使用。
@Bean
声明对象,把对象注入到容器中。
@ImportResource
作用导入其他的xml文件,相当于<impot resources="配置文件"/>
@PropertyResource
读取 properties 属性配置文件。使用属性配置文件可以实现外部化配置,在代码之外提供数据。
步骤:
1.在resources目录下,创建properties文件,使用k=v格式提供数据。
2.在PropertyResource 指定properties文件的位置。
3.使用@Value(value="${key}")读取属性
2.常用注解
@SpringBootApplication
复合注解:由@SpringBootConfiguration @EnableAutoConfiguration @ComponentScan
@SpringBootConfiguration
使用此注解的类,可以作为配置文件使用
@SpringBootConfiguration
@Configuration
public @interface SpringBootConfiguration {
@AliasFor(annotation = Configuration.class)
boolean proxyBeanMethods() default true;
}
@EnableAutoConfiguration
启动自动配置,把Java对象配置好,注入到Spring容器中
@ComponentScan
找到注解,根据注解的功能创建对象,给属性赋值等。
默认扫描,注解所在的类所在的包及其子包。
@ConfigurationProperties
把配置文件的数据映射为Java对象。
属性prefix:配置文件中某些key的开头内容
3.拦截器,过滤器
3.1 创建类实现SpringMVC框架的HandlerInterceptor接口,需要在配置文件中声明拦截器,并在SpringBoot中注册拦截器
public interface HandlerInterceptor {
default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
return true;
}
default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
}
default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
}
}
<mvc:interceptors>
<mvc:interceptor>
<mvc:path="url" />
<bean class="拦截器类全限定名称"/>
</mvc:interceptor>
</mvc:interceptors>
@Configuration
public class MyAppConfig implements WebMvcConfigurer {
//添加拦截器对象, 注入到容器中
@Override
public void addInterceptors(InterceptorRegistry registry) {
//创建拦截器对象
HandlerInterceptor interceptor = new LoginInterceptor();
//指定拦截的请求uri地址
String path []= {"/user/**"};
//指定不拦截的地址
String excludePath [] = {"/user/login"};
registry.addInterceptor(interceptor)
.addPathPatterns(path)
.excludePathPatterns(excludePath);
}
}
3.2 Filter是Servlet规范中的过滤器,可以处理请求, 对请求的参数, 属性进行调整。 常常在过滤器中处理字符编码
// 自定义过滤器
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("执行了MyFilter,doFilter ");
filterChain.doFilter(servletRequest,servletResponse);
}
}
//注册Filter
@Configuration
public class WebApplicationConfig {
@Bean
public FilterRegistrationBean filterRegistrationBean(){
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter( new MyFilter());
bean.addUrlPatterns("/user/*");
return bean;
}
}