SpringBean实例化之前做点事情
SpringBean 实例化需求,实现一个视频解码器,可以实现各种视频格式的解码 第一种方法:先去实现各个解码器,然后 if.else 判断使用哪种解码器 使用 BeanPostProcessor 优化第二种方法:使用 BeanPostProcessor 构造解码器索引,再从索引中拿到匹配的 测试运行: BeanFactoryPostProcessor BeanFactoryPostProcessor 是在 Spring 容器加载 Bean 定义XML 文件之后, Bean 实例化之前执行 BeanFactoryPostProcessor 的执行顺序在 BeanPostProcessor 之前 BeanFactoryPostProcessor 与 BeanPostProcessor 都是服务于 Bean 的生命周期中的,只是使用场景和作用略有不同 第三方类是单例的,但是想变为原型的,怎么操作?
Spring
指定 DAO接口放置的包 com.baizhiedu.dao 123456789+ 编码 ```markdown# 实战经常根据需求 写的代码1. 实体2. 表3. 创建DAO接口4. 实现Mapper文件 5. Spring与Mybatis整合编码 搭建开发环境(jar) 1234567891011121314151617181920212223242526272829<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.1.14.RELEASE</version></dependency><dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis...
SpringBoot定时任务不定时执行了
两个注解@EnableScheduling:使得@Scheduled生效 @Scheduled:标注在方法上 @Scheduled 注解fixedDelay任务结束与开始之间的间隔 fixedRate两次任务的开始的间隔,不管任务是不是执行结束 initialDelay:配合性的,可以和上面两个配合使用,第一次执行的延迟时间 cron:Linux 系统中定时任务的效果,更加灵活设置时间 基本使用 此时运行的时候,第二个任务其实是不会执行的 原理 如果不指定 scheduler ,就默认使用单线程的 scheduler,所以上面的就会阻塞,第二个定时任务拿不到线程 配置定时任务的线程池 配置文件中指定定时任务线程数 spring.task.scheduling.pool.size 自定义定时任务的线程池,编写 ScheduleConfig
SpringMVC
第四章、SpringMVC控制器开发详解 二4.1 核心要点 接受客户端(client)请求参数 [讲解完毕] 调用业务对象[讲解] 页面跳转 4.2 SpringMVC控制器调用业务对象【SSM整合】4.2.1 核心思路分析 4.2.2 编码 dispatcher.xml 1234567891011121314151617181920212223242526272829303132333435363738<context:component-scan base-package="com.baizhiedu"/><mvc:annotation-driven/><bean id="resolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!--路径--> <property name="prefix" value="...
SpringMVC自定义返回状态码
使用 ResponseEntity 类标识整个 HTTP 响应(状态码、头部信息、响应体) 异常类或 Controller 方法上标识 @ResponseStatus 注解 或者 使用 @ControllerAdvice ( @RestControllerAdvice)和 @ ExceptionHandler 注解
SpringBoot
第1章 系统总览第2章 自动化装配自动化配置 1234567891011121314@SpringBootApplicationpublic class SbApplication { public static void main(String[] args) { ConfigurableApplicationContext applicationContext = springApplication.run(args); //查看容器里的组件 String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { System.out.println("beanDefinitionName = " + beanDefinitionName); ...
Springboot跨域解决
什么是同源策略:web的安全有同源的一份力量,同源会阻止一个域(协议+主机+端口号)的js脚本和另一个域的内容交互。 什么是跨域请求:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS 当一个请求的里面的协议和域名和端口有一个和当前页面的不一样,就是跨域请求。 跨域请求会触发非同源限制 无法读取非同源网页的 Cookie、LocalStorage 和 IndexedDB 无法向非同源地址发ajax请求 前端开发的时候使用webpack的服务器设置反向代理部署的时候在NGINX设置反向代理后端实现CORS跨域请求的方式跨域资源共享(Cross-Origin Resource Sharing)。 当下的 Web 应用程序开发基本都采用了前后端分离的开发模式,数据的获取并非同源,所以跨域问题在我们日常开发中特别常见。例如,当我们从“test.com”这个域名发起请求时,浏览器为了一定的安全因素考虑,并不会允许请求去访问“api.test.com”这个域名,因为请求已经跨越了两个域名。 请注意,跨域是浏览器的一种同源安全策略,是...
Spring应用上下文的获取和保存Bean
Spring 容器是 IOC 容器,但是,反过来却不成立 不常用的容器实现 – BeanFactory:最简单的容器,提供基本的 DI 功能 高级实现,继承 BeanFactory 派生的应用上下文 – ApplicationContext:解析配置文件,创建、装配、管理、销毁 Bean 获取 ApplicationContext 的四种方式ApplicationContextInitializar:容器创建完成之后的回调定义在 org.springframework.context 包下 ApplicationListener:观察者模式的典型应用(常用) Spring Boot 启动程序的返回run 方法返回的就是应用上下文 ApplicationContextAware : Spring 的 Aware 接口(常用)Aware 可以理解为“察觉、注意到的、感知的”,在 Spring 中,XxxAware 也就是对 Xxx 感知的意思 编写工具类:保存上下文,获取Bean
Spring踩坑一
《Spring编程常见错误50例》读书笔记 源码构建依赖下载可能遇到的问题: https://blog.csdn.net/xiangxiaotian666/article/details/127399904 Spring Core 工厂 BeanFactory 内部有 Map Scan 负责扫描需要实例化的 Bean 最终使用反射的方式实例化: java.lang.Class.newInsance(); java.lang.reflect.Constructor.newInstance(); ReflectionFactory.newConstructorForSerialization(); AOP 使用多态代理实现,需要代理哪些类就使用 @Aspect 中定义的 切点 来表示 Bean 定义隐式扫描不到 Bean 的定义:::color4定义的类没有写到 Application 同级或者下级目录的时候就找不到 Bean 定义 ::: 解决可以在 Application 上写上: @ComponentScans(value = { @ComponentScan(...
SpringDataElasticsearch聚合实现过滤搜索
过滤功能分析整个过滤部分有3块: 顶部的导航,已经选择的过滤条件展示: 商品分类面包屑 其它已选择过滤参数 过滤条件展示,又包含3部分 商品分类展示 品牌展示 其它规格参数 展开或收起的过滤条件的按钮 顶部导航要展示的内容跟用户选择的过滤条件有关。这部分需要依赖第二部分:过滤条件的展示和选择。展开或收起的按钮是否显示,取决于过滤条件有多少,如果很少,那么就没必要展示。所以也是跟第二部分的过滤条件有关。 先做第二部分:过滤条件展示。 分类和品牌过滤条件 获取和展示数据库中已经有所有的分类和品牌信息。无论是分类信息,还是品牌信息,都应该从搜索的结果商品中进行聚合得到。 扩展返回的结果返回的结果PageResult对象,里面只有total、totalPage、items3个属性。现在要对商品分类和品牌进行聚合,添加分类和品牌的数据。 分类:页面显示了分类名称,但背后肯定要保存id信息。所以至少要有id和name 品牌:页面展示的有logo,有文字,当然肯定有id,基本上是品牌的完整数据 新建一个类,继承PageResult,然后扩展两个新的属性:分类集合和品牌集合: 123...