SpringBoot笔记
使用Java配置:
可以完全替代xml配置,
在功能类的Bean 和使用功能类的Bean中都不再使用 @Service @Autowired等来声明注入Bean,都放到了配置类中配置@Configuration,也取消了之前的扫描。
注意:在使用功能类的Bean中需要建立set方法将调用的功能类的值赋值到当前。
Spring 常用配置:
Bean Scope (范围);
Spring EL 表达式赋值,@value ;
Bean的初始化和销毁,init destroy;
Profile 可以实现在不同情况下实例化不同的Bean
事件(Application Event)为Bean与Bean之间消息通信提供了支持,事件Bean(继承ApplicationEvent)+事件监听器Bean(实现接口ApplicationListener<事件Bean>)+事件发布类
Spring 高级话题
Spring Aware 为了让Bean获得Spring容器的服务,(实现BeanNameAware、ResourceLoaderAware接口,重写set方法)
加载文件内容:
Resource resource =loader.getResource("classpath:....txt");
IOUtils.toString(resource.getInputStream());
多线程,配置类中使用@EnableAsyns开启对异步任务的支持,实现AsyncConfigurer接口并重写getAsyncExeutor方法,并返回一个ThreadPoolTaskExeuctor(TaskExecutor任务执行器),任务执行类使用@Async注解该方法是异步方法(也可以之间在类上面注解),这样输出就是并发执行的了。
计划任务,配置类中使用@EnableScheduling开启对计划任务的支持,在执行计划任务的方法上注解@Scheduled ,可以实现每隔多少时间执行一次也可以实现在制定时间执行(设置置顶时间的时候要确认SimpleDateFormat类型)。
条件注解@Conditional,相比通过活动的profile更加通用。条件类实现Condition接口,并且重写matches来构造判断条件,不同条件下的Bean实现同一接口,配置类里通过@condetional(条件类)来确定调用哪个Bean。
组合注解和元注解,使用@interface创建一个组合注解的类,在类的上面注解需要组合的注解,类里面使用String[] value() default ();覆盖value参数,配置类中使用组合注解注解既可以实现元注解的作用。
@Enable*注解,用来开启一项功能的支持
测试,Junit单元测试,TestNG,测试方法(1.使用SpringJUnit4ClassRunner;2,shiyong @ContextConfiguration加载配置;3.@ActiveProfile声明活动的profile;4.@Autowired;5.@Test)
Spring mvc基础
基于maven的配置,1.pom.xml:添加依赖,日志配置,2.新建logback.xml来配置日志,方便查看错误,3.界面演示jsp,4.Spring MVC配置,映射界面文件5.web配置(类实现接口WebApplicationInitalizer);6.简单控制器(使用@Controller注解,使用@RequestMapping(“/index”)配置URL和方法之间的映射,返回“index”,即到界面index.jsp)
SpringMVC常用注解,@Controller,@RequestMapping,@ResponseBody,@RequestBody,@PathVariable,@RestController
传值类,Json或xml,在@RequestMapping的produces中配置,如@RequestMapping(value="/getjson",produces={"application/json;charset=UTF-8"})
Spring MVC基本配置(上面第四步的内容),将配置类继承WebMvcConfigureAdapter类,并使用@EnableWebMvc开启对Spring MVC的配置支持
添加静态资源映射,程序的静态文件(js、css、图片)等需要之间访问,这时我们可以在配置里重写addRsourceHandles方法实现
拦截器配置,通过普通的Bean实现HanlderInterceptor接口或者继承HandlerInterceptorAdapter类来实现自定义拦截器,重写请求前后的方法(preHandle、postHandle),配置类中重写WebMvcConfigureAdapter的addInterceptors方法来注册自定义的拦截器。
@ControllerAdvice,
其他,界面跳转 @RequestMapping(“/index”) public。。{。。} @Override public void addViewController(ViewControllerRegistry registry){ registry.addViewController("/index").setViewName("/index");
更多,WebMvcConfigureAdapter的API
Spring MVC高级配置
文件上传,commons-io
HttpMessageConverter
服务器端推送技术,WebSocket(双向通信技术,效果类似)