往容器中添加组件的几种方式
1.第一种 以继承重写的方式,加上@Configuration 就是一个配置类 添加进容器中
@Configuration(proxyBeanMethods = false) public class WebConfig implements WebMvcConfigurer { @Override public void configurePathMatch(PathMatchConfigurer configurer) { UrlPathHelper urlPathHelper = new UrlPathHelper(); // 设置为不移除分号后面的内容 urlPathHelper.setRemoveSemicolonContent(false); configurer.setUrlPathHelper(urlPathHelper); } }
2.第二种 以对象的方式 ,类是接口
如果类是接口 中new的时候就直接使用内部类的方式实现方法 然后直接把对象返回出去
@Bean // WebConfigurer public WebMvcConfigurer webMvcConfigurer() { return new WebMvcConfigurer() { @Override public void configurePathMatch(PathMatchConfigurer configurer) { UrlPathHelper urlPathHelper = new UrlPathHelper(); urlPathHelper.setRemoveSemicolonContent(false); configurer.setUrlPathHelper(urlPathHelper); } }; }
3.第三种 以对象的方式 ,类是实现
@Configuration public class MyRegistConfig { @Bean public ServletRegistrationBean myServlet(){ MyServlet myServlet = new MyServlet(); return new ServletRegistrationBean(myServlet,"/my","/my02"); } @Bean public FilterRegistrationBean myFilter(){ MyFilter myFilter = new MyFilter(); // return new FilterRegistrationBean(myFilter,myServlet()); FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(myFilter); filterRegistrationBean.setUrlPatterns(Arrays.asList("/my","/css/*")); return filterRegistrationBean; } @Bean public ServletListenerRegistrationBean myListener(){ MySwervletContextListener mySwervletContextListener = new MySwervletContextListener(); return new ServletListenerRegistrationBean(mySwervletContextListener); } }
第三种就是咋们经常使用的 像pojo实体类, 直接return 对象,
其实这些都还好,一班来说只要是容器中的Bean 都可以自定义重写,但是如何找到关键的东西,不能说拿着那100多个自动配置 一顿找吧,最好的办法就是看文档啦