java高级与sping的学习

今天学得挺杂的 1.java封装:javabean,减少耦合、隐藏信息、通过接口访问该类的代码和数据。 2.spring bean spring的ioc容器:先创建容器,然后刷新容器,通过反射生成bean,交给容器管理,通过注解等方式将bean依赖注入到需要改bean的bean中,完成bean间的相互依赖。3.springboot启动流程:有两个支线,不过最终的作用都是将bean交给容器管理。首先是创建springbootapplicatin的实例,判断应用是不是web应用,然后根据应用类型创建ioc容器。接着刷新容器进行容器的初始化。这个过程开启两个支线,一个是自己项目中的bean生成与依赖注入,一个是自动装配:第三方依赖库中的bean的生成与注入,这两都是为是容器初始化。这期间还会有一个将生成的bean动态代理的过程:给用到AOP的bean生成动态代理对象,项目中的bean是目标对象,只做核心业务,动态代理对象可以在核心业务前中后执行自己编写封装的代码,这就是切面的原理。bean生成、依赖注入与bean的动态代理生成都完成后就开始下一步提示应用可以开始了,然后启动内置的服务器,应用启动完成。 4.springweb的拦截器:作用是拦截web请求的接收与响应,是作用于Http层面上的。可以实现全局的登录鉴权等。在权限校验场景下,常用做法是结合拦截器和自定义注解实现:先自定义一个注解,里面定义权限码,在后面的权限校验中用来与前端请求中的用户态进行比对。第二部,创建拦截器,实现HandlerInterceptor接口,编写preHandle等被拦截的控制层方法执行前中后需要做的逻辑。这里权限校验是请求前要实现的逻辑,使用preHandle。然后重写preHandle方法,先判断是否为Controller方法,是就接着获取方法上的自己定义的注解,或springboot封装的注解如@事务,无注解的方法返回true,表示放行,不对该方法做权限控制。这里是权限校验,所以是获取方法上自定义的注解。接着获取当前用户,并校验权限:从Session/token中获取用户信息,然后与该方法上自定义注解里的权限值进行比对,相同则有权限,放行。不同则无权限,拦截。接着别忘了注册该拦截器,在实现了WebMvcConfigurer的类中添加刚才创建的拦截器,并写上拦截什么请求和放行不需拦截的路径。最后就是在Controller 中使用了:在需要特定权限才能执行的方法标上刚才的自定义注解,里面写上该方法需要的权限。 5.AOP实现:先创建一个切面类标上@Aspect@Componen注解表明这是一个切面。然后写一个切入点(PointCut):由@Pointcut注解定义“在何处”进行拦截。接着就是写切面逻辑了。可以用通知(Advice):描述“何时”和“做什么”,如@Around(环绕)。在逻辑方法上标上通知注解,这里选择@Around,它可以完全控制目标方法的执行。在@Around注解中传入刚才写好的切入点。然后编写好方法中的切入逻辑就完成了。AOP可以完成Service层方法级的日志、事务、性能监控。至于底层比拦截器多用到了动态代理的机制。要注意同类方法调用因为不经过动态代理而使AOP失效的问题,可以通过将方法抽离到另外的类中避免失效,也有助于业务代码分层,易于维护。 从反射、动态代理到 IOC/DI,再到启动流程和自动装配,已经把 Spring 的底层脉络完全打通啦! 6.网络编程:TCP协议网络通信:socket套接字用于网络通信:服务器创建servicersocket调用accept()方法,监听客户端的连接。客服端创建socket,连接指定服务器(主机加端口)。服务器监听到连接生成一个socket对象用于服务器与客户端的通信,客户端生成一个socket对象与服务器进行通信。服务器与客户端间有两个数据流,通过socket对象进行读写操作。因为TCP是双向通信,所以socket可以同时发送和接收信息。

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
凌空零
作者分享
口述学习内容 5.8 事务隔离级别:为解决多个事务并行操作数据库可能出现脏读、不可重复读与幻读这三种问题,得出了四种事务级别,作为不同场景下的事务问题解决方案。 读未提交;问题全有。 脏读:读到了别人已修改但还没提交的数据,后面别人的事务可能回滚,读到的就成了假数据。 不可重复读:同一事务内,两次读数据的值不同,因为期间被别人修改了。 幻读:同一事务内,两次查询数据的行数不同,因为期间数据被别人增加或删除了。 读已提交:通过锁表?将还没提交的行锁起来,解决脏读。 可重复读:通过给数据库加版本号,同一事务内读到的数据是同一个版本的数据库,解决了不可重复读。 串行:通过锁数据库?同一时间只有一个事务内操作数据库,解决了幻读。 5.7 mysql:DDL、DML。单表函数、多表函数:聚合函数。 项目:1.黑马苍穹外卖实现员工登录、新增员工功能。2.登录功能将明文登录密码转为密文存入数据库的功能。3.通过转换工具将员工DTO的属性拷贝到员工实体中,实现便捷编写代码。4.新增员工的用户名有唯一索引且与数据库表中已有数据重复而发现运行时异常报错,通过编写自定义用户已存在异常,编写全局异常处理器捕获自定义异常,实现异常处理。且统一异常处理,代码可复用、异常与业务代码分离,代码可读性高。
2
Spring 框架实现“统一逻辑处理”的两种核心方式
3
java集合复习
3
集合的迭代器遍历复习
2
java线程入门复习
3
下载 APP