网站建设主要产品重庆专业的网站建设

当前位置: 首页 > news >正文

网站建设主要产品,重庆专业的网站建设,国内看netflix的vps,海拉尔建网站1、什么是Spring框架#xff1f; Spring #xff1a;是一款开源的轻量级 Java 开发框架#xff0c;旨在提高开发人员的开发效率以及系统的可维护性
2、Spring、SpringMVC和SpringBoot的区别 Spring主要指Spring Framework#xff0c;就是指如上图所示的各项功能模块Spr…1、什么是Spring框架 Spring 是一款开源的轻量级 Java 开发框架旨在提高开发人员的开发效率以及系统的可维护性
2、Spring、SpringMVC和SpringBoot的区别 Spring主要指Spring Framework就是指如上图所示的各项功能模块SpringMVC主要指一种架构MVC分别是Model模型、View视图、Controller控制器的简写核心思想就是将数据、显示和业务逻辑分离来组织代码。SpringBoot旨在简化Spring开发减少各种麻烦的配置文件尽量做到开箱即用 3、Spring IoC IoCInversion of Control:控制反转 是一种设计思想而不是一个具体的技术实现。IoC 的思想就是将原本在程序中手动创建对象的控制权交由 Spring 框架来管理控制指的是对象创建实例化、管理的权力反转控制权交给外部环境Spring 框架、IoC 容器在 Spring 中 IoC 容器是 Spring 用来实现 IoC 的载体 IoC 容器实际上就是个 MapkeyvalueMap 中存放的是各种对象 4、Spring Bean 1、简介 简单来说Bean 代指的就是那些被 IoC 容器所管理的对象我们需要告诉 IoC 容器帮助我们管理哪些对象这个是通过配置元数据来定义的。配置元数据可以是 XML 文件、注解或者 Java 配置类 2、将类声明为Bean的常用注解如下 Component 通用的注解可标注任意类为 Spring 组件Repository : 对应持久层即 Dao 层主要用于数据库相关操作Service : 对应服务层主要涉及一些复杂的逻辑需要用到 Dao 层Controller : 对应 Spring MVC 控制层主要用户接受用户请求并调用 Service 层返回数据给前端页面Bean常和Configuration注解搭配使用用于显式声明单个bean而不是让Spring像上面一样自动执行可以更精细地自定义配置一般用来注解方法但其返回值是对象 3、注入Bean的常用注解如下 AutowiredAutowired 属于 Spring 内置的注解默认的注入方式为byType根据类型进行匹配也就是说会优先根据接口类型去匹配并注入 Bean 接口的实现类ResourceResource属于 JDK 提供的注解默认注入方式为 byName。如果无法通过名称匹配到对应的 Bean 的话注入方式会变为byType 4、Bean的生命周期 Bean 容器找到配置文件中 Spring Bean 的定义Bean 容器利用 Java Reflection API 创建一个 Bean 的实例如果涉及到一些属性值 利用 set()方法设置一些属性值如果 Bean 实现了 BeanNameAware 接口调用 setBeanName()方法传入 Bean 的名字与上面的类似如果实现了其他 *.Aware接口就调用相应的方法如果有和加载这个 Bean 的 Spring 容器相关的 BeanPostProcessor 对象执行postProcessBeforeInitialization() 方法如果 Bean 实现了InitializingBean接口执行afterPropertiesSet()方法如果 Bean 在配置文件中的定义包含 init-method 属性执行指定的方法如果有和加载这个 Bean 的 Spring 容器相关的 BeanPostProcessor 对象执行postProcessAfterInitialization() 方法当要销毁 Bean 的时候如果 Bean 实现了 DisposableBean 接口执行 destroy() 方法当要销毁 Bean 的时候如果 Bean 在配置文件中的定义包含 destroy-method 属性执行指定的方法 5、Spring AOP 1、简述AOP(Aspect-Oriented Programming:面向切面编程)能够将那些与业务无关却为业务模块所共同调用的逻辑或责任例如事务处理、日志管理、权限控制等封装起来便于减少系统的重复代码降低模块间的耦合度并有利于未来的可拓展性和可维护性 2、相关知识点 目标(Target)被通知的对象代理(Proxy)向目标对象应用通知之后创建的代理对象连接点(JoinPoint)目标对象的所属类中定义的所有方法均为连接点切入点(Pointcut)被切面拦截 / 增强的连接点切入点一定是连接点连接点不一定是切入点通知(Advice)增强的逻辑 / 代码也即拦截到目标对象的连接点之后要做的事情切面(Aspect)切入点(Pointcut)通知(Advice)Weaving(织入)将通知应用到目标对象进而生成代理对象的过程动作 6、Spring AOP和AspectJ AOP有什么区别 Spring AOP 属于运行时增强而 AspectJ 是编译时增强Spring AOP 基于代理(Proxying)而 AspectJ 基于字节码操作(Bytecode Manipulation)Spring AOP相对简单但AspectJ性能更好 7、AspectJ定义的通知类型 Before前置通知目标对象的方法调用之前触发After 后置通知目标对象的方法调用之后触发AfterReturning返回通知目标对象的方法调用完成在返回结果值之后触发AfterThrowing异常通知 目标对象的方法运行中抛出 / 触发异常后触发。AfterReturning 和 AfterThrowing 两者互斥。如果方法调用成功无异常则会有返回值如果方法抛出了异常则不会有返回值Around 环绕通知编程式控制目标对象的方法调用。环绕通知是所有通知类型中可操作范围最大的一种因为它可以直接拿到目标对象以及要执行的方法所以环绕通知可以任意的在目标对象的方法调用前后搞事甚至不调用目标对象的方法 8、控制多个切面的执行顺序 通常使用Order注解直接定义切面顺序 // 值越小优先级越高 Order(3) Component Aspect public class LoggingAspect implements Ordered {实现Ordered接口重写getOrder方法 Component Aspect public class LoggingAspect implements Ordered {// ….Overridepublic int getOrder() {// 返回值越小优先级越高return 1;} }9、Spring事务 事务是逻辑上的一组操作要么都执行要么都不执行 1、Spring管理事务的方式 编程式事务 在代码中硬编码(不推荐使用) : 通过 TransactionTemplate或者 TransactionManager 手动管理事务实际应用中很少使用但是对于理解 Spring 事务管理原理有帮助声明式事务 在 XML 配置文件中配置或者直接基于注解推荐使用 : 实际是通过 AOP 实现基于Transactional 的全注解方式使用最多 2、事务传播行为为了解决业务层方法之间互相调用的事务问题Transactional注解默认使用的值为TransactionDefinition.PROPAGATION_REQUIRED 3、事务的隔离级别指的是一个事务对数据的修改与另一个并行的事务的隔离程度当多个事务同时访问相同数据时如果没有采取必要的隔离机制就可能发生以下问题 脏读一个事务读到另一个事务未提交的更新数据。幻读例如第一个事务对一个表中的数据进行了修改比如这种修改涉及到表中的“全部数据行”。同时第二个事务也修改这个表中的数据这种修改是向表中插入“一行新数据”。那么以后就会发生操作第一个事务的用户发现表中还存在没有修改的数据行就好象发生了幻觉一样。不可重复读比方说在同一个事务中先后执行两条一模一样的select语句期间在此次事务中没有执行过任何DDL语句但先后得到的结果不一致这就是不可重复读 常用的是TransactionDefinition.ISOLATION_DEFAULT使用后端数据库默认的隔离级别MySQL 默认采用的 REPEATABLE_READ 隔离级别 Oracle 默认采用的 READ_COMMITTED 隔离级别 4、Transactional(rollbackFor Exception.class)注解如果类或者方法加了这个注解那么这个类里面的方法抛出异常就会回滚数据库里面的数据也会回滚 在 Transactional 注解中如果不配置rollbackFor属性,那么事务只会在遇到RuntimeException的时候才会回滚加上 rollbackForException.class,可以让事务在遇到非运行时异常时也回滚 十、实体之间的关联关系注解 OneToOne : 一对一ManyToMany 多对多OneToMany : 一对多ManyToOne 多对一