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

门户网站后台多网站建设

门户网站后台,多网站建设,如何开网店卖东西,做微信小程序的公司1、什么是 Spring#xff1f; Spring是一个轻量级的IOC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架#xff0c;目的是用于简化企业应用程序的开发#xff0c;它使得开发者只需要关心业务需求。常见的配置方式有三种#xff1a;基于XML的配置、基于注解的配置…1、什么是 Spring Spring是一个轻量级的IOC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架目的是用于简化企业应用程序的开发它使得开发者只需要关心业务需求。常见的配置方式有三种基于XML的配置、基于注解的配置、基于Java的配置。 主要由以下几个模块组成 Spring Core核心类库提供IOC服务。Spring Context提供框架式的Bean访问方式以及企业级功能JNDI、定时任务等。Spring AOPAOP服务。Spring DAO对JDBC的抽象简化了数据访问异常的处理。Spring ORM对现有的ORM框架的支持。Spring Web提供了基本的面向Web的综合特性例如多方文件上传。Spring MVC提供面向Web应用的Model-View-Controller实现。  2、你们项目中为什么使用 Spring 框架  轻量Spring 是轻量的基本的版本大约2MB。控制反转Spring通过控制反转实现了松散耦合对象们给出它们的依赖而不是创建或查找依赖的对象们。面向切面的编程(AOP)Spring支持面向切面的编程并且把应用业务逻辑和系统服务分开。容器Spring 包含并管理应用中对象的生命周期和配置。MVC框架Spring的WEB框架是个精心设计的框架是Web框架的一个很好的替代品。事务管理Spring 提供一个持续的事务管理接口可以扩展到上至本地事务下至全局事务JTA异常处理Spring 提供方便的API把具体技术相关的异常比如由JDBCHibernate or JDO抛出的转化为一致的unchecked 异常。  3、说说你对 Spring MVC 的理解  MVC是一种设计模式 M-Model 模型完成业务逻辑有javaBean构成servicedaoentityV-View 视图做界面的展示 jsphtml……C-Controller 控制器接收请求—调用模型—根据结果派发页面   工作原理  用户发送请求至前端控制器DispatcherServlet。DispatcherServlet收到请求调用HandlerMapping处理器映射器。处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找)生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。DispatcherServlet调用HandlerAdapter处理器适配器。HandlerAdapter经过适配调用具体的处理器(Controller也叫后端控制器)。Controller执行完成返回ModelAndView。HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。DispatcherServlet将ModelAndView传给ViewReslover视图解析器。ViewReslover解析后返回具体View。DispatcherServlet根据View进行渲染视图即将模型数据填充至视图中。DispatcherServlet响应用户。  组件说明  DispatcherServlet前端控制器不需要工程师开发由框架提供。 作用接收请求响应结果相当于转发器中央处理器。有了dispatcherServlet减少了其它组件之间的耦合度。 用户请求到达前端控制器它就相当于mvc模式中的cdispatcherServlet是整个流程控制的中心由它调用其它组件处理用户的请求dispatcherServlet的存在降低了组件之间的耦合性。HandlerMapping处理器映射器不需要工程师开发由框架提供。 作用根据请求的url查找Handler HandlerMapping负责根据用户请求找到Handler即处理器springmvc提供了不同的映射器实现不同的映射方式例如配置文件方式实现接口方式注解方式等。HandlerAdapter处理器适配器不需要工程师开发由框架提供。 作用按照特定规则HandlerAdapter要求的规则去执行 Handler 通过HandlerAdapter对处理器进行执行这是适配器模式的应用通过扩展适配器可以对更多类型的处理器进行执行。Handler处理器需要工程师开发。 作用是继DispatcherServlet前端控制器的后端控制器在DispatcherServlet的控制下Handler对具体的用户请求进行处理。 由于Handler涉及到具体的用户业务请求所以一般情况需要工程师根据业务需求开发Handler。 注意编写Handler时按照HandlerAdapter的要求去做这样适配器才可以去正确执行Handler。View resolver视图解析器不需要工程师开发由框架提供。 作用进行视图解析根据逻辑视图名解析成真正的视图view View Resolver负责将处理结果生成View视图View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址再生成View视图对象最后对View进行渲染将处理结果通过页面展示给用户。 springmvc框架提供了很多的View视图类型包括jstlView、freemarkerView、pdfView等。 一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户需要由工程师根据业务需求开发具体的页面。View视图需要工程师开发(jsp、html...)。 View是一个接口实现类支持不同的View类型(jsp、freemarker、pdf...)。  4、SpringMVC 常用的注解有哪些  RequestMapping用于处理请求 url 映射的注解可用于类或方法上。用于类上则表示类中的所有响应请求的方法都是以该地址作为父路径。RequestBody注解实现接收http请求的json数据将json转换为java对象。ResponseBody注解实现将conreoller方法返回对象转化为json对象响应给客户。  5、谈谈你对 Spring IOC 的理解   6、Spring Bean 的生命周期  7、Spring 中的 Bean 是线程安全的么  Spring 框架并没有对单例 Bean 进行任何多线程的封装处理。 关于单例 Bean 的线程安全和并发问题需要开发者自行去搞定。单例的线程安全问题并不是 Spring 应该去关心的。Spring 应该做的是提供根据配置创建单例 Bean 或多例 Bean 的功能。  实际上大部分的 Spring Bean 并没有可变的状态所以在某种程度上说 Spring 的单例 Bean 是线程安全的。如果你的 Bean 有多种状态的话就需要自行保证线程安全。最浅显的解决办法就是将多态 Bean 的作用域Scope由 Singleton 变更为 Prototype。  8、Spring 中 Bean 的作用域  singleton默认每个容器中只有一个bean的实例单例的模式由BeanFactory自身来维护。prototype为每一个bean请求提供一个实例。request为每一个网络请求创建一个实例在请求完成以后bean会失效并被垃圾回收器回收。session与request范围类似确保每个session中有一个bean的实例在session过期后bean会随之失效。global-session全局作用域global-session和Portlet应用相关。当你的应用部署在Portlet容器中工作时它包含很多portlet。如果你想要声明让所有的portlet共用全局的存储变量的话那么这全局变量需要存储在global-session中。全局作用域与Servlet中的session作用域效果相同。  9、ApplicationContext 和 BeanFactory 的区别  包目录不同 spring-beans.jar 中 org.springframework.beans.factory.BeanFactory spring-context.jar 中 org.springframework.context.ApplicationContext 国际化 BeanFactory 没有扩展 Spring 中 MessageResource接口是不支持国际化功能的。ApplicationContext 扩展了 MessageResource 接口因而具有消息处理的能力i18N。   强大的事件机制Event  基本上牵涉到事件Event方面的设计就离不开观察者模式ApplicationContext 的事件机制 主要通过 ApplicationEvent 和 ApplicationListener 这两个接口来提供的和 Java swing 中的事件机制一样。即当 ApplicationContext 中发布一个事件时所有扩展了 ApplicationListener 的 Bean 都将接受到这个事件并进行相应的处理。 底层资源的访问   ApplicationContext 扩展了 ResourceLoader资源加载器接口从而可以用来加载多个Resource。BeanFactory 是没有扩展 ResourceLoader。 对 Web 应用的支持   与 BeanFactory 通常以编程的方式被创建ApplicationContext 能以声明的方式创建如使用 ContextLoader。当然你也可以使用 ApplicationContext 的实现方式之一以编程的方式创建 ApplicationContext 实例。 延迟加载 1. BeanFactroy 采用的是延迟加载形式来注入 Bean 的即只有在使用到某个 Bean 时(调用getBean())才对该 Bean 进行加载实例化。这样我们就不能发现一些存在的 spring 的配置问题。而 ApplicationContext 则相反它是在容器启动时一次性创建了所有的 Bean。这样在容器启动时我们就可以发现 Spring 中存在的配置错误。2. BeanFactory 和 ApplicationContext 都支持 BeanPostProcessor、BeanFactoryPostProcessor 的使用。两者之间的区别是BeanFactory 需要手动注册而ApplicationContext 则是自动注册。 可以看到ApplicationContext 继承了 BeanFactoryBeanFactory 是 Spring 中比较原始的 Factory它不支持 AOP、Web 等 Spring 插件。而 ApplicationContext 不仅包含了 BeanFactory 的所有功能还支持 Spring 的各种插件还以一种面向框架的方式工作以及对上下文进行分层和实现继承。 BeanFactory 是 Spring 框架的基础设施面向 Spring 本身而 ApplicationContext 面向使用 Spring 的开发者相比 BeanFactory 提供了更多面向实际应用的功能几乎所有场合都可以直接使用 ApplicationContext而不是底层的 BeanFactory。 常用容器 BeanFactory 类型的有 XmlBeanFactory它可以根据 XML 文件中定义的内容创建相应的Bean。ApplicationContext 类型的常用容器有 ClassPathXmlApplicationContext从 ClassPath 的 XML 配置文件中读取上下文并生成上下文定义。应用程序上下文从程序环境变量中取得。FileSystemXmlApplicationContext由文件系统中的 XML 配置文件读取上下文。XmlWebApplicationContext由 Web 应用的 XML 文件读取上下文。例如我们在 Spring MVC使用的情况。  10、BeanFactory 与 FactoryBean 的区别 11、Spring 是怎么解决循环依赖的  整个流程大致如下 首先 A 完成初始化第一步并将自己提前曝光出来通过 ObjectFactory 将自己提前曝光在初始化的时候发现自己依赖对象 B此时就会去尝试 get(B)这个时候发现 B 还没有被创建出来然后 B 就走创建流程在 B 初始化的时候同样发现自己依赖 CC 也没有被创建出来这个时候 C 又开始初始化进程但是在初始化的过程中发现自己依赖 A于是尝试 get(A)。这个时候由于 A 已经添加至缓存中一般都是添加至三级缓存 singletonFactories通过ObjectFactory 提前曝光所以可以通过 ObjectFactory#getObject() 方法来拿到 A 对象。C 拿到 A 对象后顺利完成初始化然后将自己添加到一级缓存中回到 BB 也可以拿到 C 对象完成初始化A 可以顺利拿到 B 完成初始化。到这里整个链路就已经完成了初始化过程了。 关键字三级缓存提前曝光。   public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements SingletonBeanRegistry {// 一级缓存private final MapString, Object singletonObjects new ConcurrentHashMap(256);// 三级缓存private final MapString, ObjectFactory? singletonFactories new HashMap(16);// 二级缓存private final MapString, Object earlySingletonObjects new HashMap(16); } 12、谈谈你对Spring AOP的理解   AOPAspect-Oriented Programming面向切面编程能够将那些与业务无关却为业务模块所 共同调用的逻辑或责任例如事务处理、日志管理、权限控制等封装起来便于减少系统的重复 代码降低模块间的耦合度并有利于未来的可扩展性和可维护性。 Spring AOP是基于动态代理的如果要代理的对象实现了某个接口那么Spring AOP就会使 JDK动态代理去创建代理对象而对于没有实现接口的对象就无法使用JDK动态代理转而使 CGlib动态代理生成一个被代理对象的子类来作为代理。  public interface UserDao {void add();void update();}Repository public class UserDaoImpl implements UserDao {AutowiredQualifier(value jdbcTemplate)JdbcTemplate jdbcTemplate;public JdbcTemplate getJdbcTemplate() {return jdbcTemplate;}Overridepublic void add() {System.out.println(do add......);}Overridepublic void update() {System.out.println(do update......);}}public class UserDaoProxy implements InvocationHandler {private UserDaoImpl userDaoImpl;public UserDaoProxy(UserDaoImpl userDaoImpl) {this.userDaoImpl userDaoImpl;}Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println(before do method......);method.invoke(userDaoImpl);System.out.println(after do method......);return null;}}/*** jdk动态代理*/ Test public void testProxy() {Class[] clazzs {UserDao.class};UserDaoProxy userDaoProxy new UserDaoProxy(new UserDaoImpl());UserDao userDao (UserDao) Proxy.newProxyInstance(TestSpring.class.getClassLoader(), clazzs, userDaoProxy);userDao.add(); } 当然也可以使用AspectJSpring AOP中已经集成了AspectJAspectJ应该算得上是Java生态系统中最完整的 AOP 框架了。使用 AOP之后我们可以把一些通用功能抽象出来在需要用到的地方直接使用即可这样可以大大简化代码量。我们需要增加新功能也方便提高了系统的扩展性。日志功能、事务管理和权限管理等场景都用到了AOP。  Aspect Component public class UserDaoAspect {/*** 相同切入点抽取*/Pointcut(value execution(* com.ww.spring5.dao.Impl.UserDaoImpl.add()))public void logPointCut() {}/*** 前置通知*/Before(value execution(* com.ww.spring5.dao.Impl.UserDaoImpl.add()))public void beforeAdd() {System.out.println(beforeAdd......);}/*** 后置通知*/After(value execution(* com.ww.spring5.dao.Impl.UserDaoImpl.add()))public void afterAdd() {System.out.println(afterAdd......);}/*** 环绕通知*/Around(value logPointCut())public void aroundAdd(ProceedingJoinPoint joinPoint) throws Throwable {System.out.println(aroundAdd before......);joinPoint.proceed(); // 执行被增强的方法【UserDaoImpl.add()】System.out.println(aroundAdd after......);}/*** 最终通知*/AfterReturning(value execution(* com.ww.spring5.dao.Impl.UserDaoImpl.add()))public void afterReturningAdd() {System.out.println(afterReturningAdd......);}/*** 异常通知*/AfterThrowing(value execution(* com.ww.spring5.dao.Impl.UserDaoImpl.add()))public void afterThrowingAdd() {System.out.println(afterThrowingAdd......);}} 术语 连接点可以增强的方法称为连接点。切入点实际增强的方法称为切入点通知实际增强的逻辑称为通知 前置通知后置通知环绕通知异常通知最终通知 切面是动作把通知应用到切入点过程称为切面。 切入点语法结构 execution([权限修饰符] [返回类型] [类全路径].[方法名称]([参数列表])) 13、Spring AOP和AspectJ AOP有什么区别  Spring AOP是属于运行时增强而AspectJ是编译时增强。Spring AOP基于代理Proxying而 AspectJ基于字节码操作Bytecode Manipulation。 Spring AOP已经集成了AspectJAspectJ应该算得上是Java生态系统中最完整的AOP框架了。 AspectJ相比于Spring AOP功能更加强大但是Spring AOP相对来说更简单。 如果我们的切面比较少那么两者性能差异不大。但是当切面太多的话最好选择AspectJ它比SpringAOP快很多。  14、Spring框架中都用到了哪些设计模式  简单工厂模式Spring 中的 BeanFactory 就是简单工厂模式的体现。根据传入一个唯一的标识来获得 Bean 对象但是在传入参数后创建还是传入参数前创建要根据具体情况来定。 工厂模式Spring 中的 FactoryBean 就是典型的工厂方法模式实现了 FactoryBean 接口的 bean是一类叫做 factory 的 bean。其特点是spring 在使用 getBean() 调用获得该 bean 时会自动调用该 bean 的 getObject() 方法所以返回的不是 factory 这个 bean而是这个 bean.getOjbect()方法的返回值。单例模式在 spring 中用到的单例模式有 scopesingleton 注册式单例模式bean 存放于 Map 中。bean name 当做 keybean 当做 value。原型模式在 spring 中用到的原型模式有 scopeprototype 每次获取的是通过克隆生成的新实例对其进行修改时对原有实例对象不造成任何影响。迭代器模式在 Spring 中有个 CompositeIterator 实现了 IteratorIterable 接口和 Iterator 接口这两个都是迭代相关的接口。可以这么认为实现了 Iterable 接口则表示某个对象是可被迭代的。Iterator 接口相当于是一个迭代器实现了 Iterator 接口等于具体定义了这个可被迭代的对象时如何进行迭代的。代理模式Spring 中经典的 AOP就是使用动态代理实现的分 JDK 和 CGlib 动态代理。适配器模式Spring 中的 AOP 中 AdvisorAdapter 类它有三个实现MethodBeforAdviceAdapter、AfterReturnningAdviceAdapter、ThrowsAdviceAdapter。Spring会根据不同的 AOP 配置来使用对应的 Advice与策略模式不同的是一个方法可以同时拥有多个Advice。Spring 存在很多以 Adapter 结尾的大多数都是适配器模式。观察者模式Spring 中的 Event 和 Listener。spring 事件ApplicationEvent该抽象类继承了EventObject 类JDK 建议所有的事件都应该继承自 EventObject。spring 事件监听器ApplicationListener该接口继承了 EventListener 接口JDK 建议所有的事件监听器都应该继承EventListener。模板模式Spring 中的 org.springframework.jdbc.core.JdbcTemplate 就是非常经典的模板模式的应用里面的 execute 方法把整个算法步骤都定义好了。责任链模式DispatcherServlet 中的 doDispatch() 方法中获取与请求匹配的处理器HandlerExecutionChainthis.getHandler() 方法的处理使用到了责任链模式。 15、Spring 事务实现方式  编程式事务管理这意味着你可以通过编程的方式管理事务这种方式带来了很大的灵活性但很难维护。声明式事务管理这种方式意味着你可以将事务管理和业务代码分离。你只需要通过注解或者XML配置管理事务。  16、Spring 框架的事务管理有哪些优点  它为不同的事务API(如JTA, JDBC, Hibernate, JPA, 和JDO)提供了统一的编程模型。它为编程式事务管理提供了一个简单的API而非一系列复杂的事务API(如JTA).它支持声明式事务管理。它可以和Spring 的多种数据访问技术很好的融合。  17、说说事务的隔离级别  READ_UNCOMMITTED未提交读允许脏读也就是可能读取到其他会话中未提交事务修改的数据 READ_COMMITTED提交读只能读取到已经提交的数据。Oracle等多数数据库默认都是该级别 (不重复读)REPEATED_READ可重复读在同一个事务内的查询都是事务开始时刻一致的Mysql的InnoDB默认级别。在SQL标准中该隔离级别消除了不可重复读但是还存在幻读多个事务同时修改同一条记录事务之间不知道彼此存在当事务提交之后后面的事务修改的数据将会覆盖前事务前一个事务就像发生幻觉一样 SERIALIZABLE序列化完全串行化的读每次读都需要获得表级共享锁读写相互都会阻塞。 18、说说事务的传播级别  PROPAGATION_REQUIRED默认的Spring事物传播级别若当前存在事务则加入该事务若不存在事务则新建一个事务。 PAOPAGATION_REQUIRE_NEW若当前没有事务则新建一个事务。若当前存在事务则新建一个事务新老事务相互独立。外部事务抛出异常回滚不会影响内部事务的正常提交。 PROPAGATION_NESTED如果当前存在事务则嵌套在当前事务中执行。如果当前没有事务则新建一个事务类似于REQUIRE_NEW。 PROPAGATION_SUPPORTS支持当前事务若当前不存在事务以非事务的方式执行。 PROPAGATION_NOT_SUPPORTED:以非事务的方式执行若当前存在事务则把当前事务挂起。 PROPAGATION_MANDATORY强制事务执行若当前不存在事务则抛出异常. PROPAGATION_NEVER以非事务的方式执行如果当前存在事务则抛出异常。 19、事务三要素是什么   数据源表示具体的事务性资源是事务的真正处理者如MySQL等。事务管理器像一个大管家从整体上管理事务的处理过程如打开、提交、回滚等。事务应用和属性配置像一个标识符表明哪些方法要参与事务如何参与事务以及一些相关属性如隔离级别、超时时间等。  20、事务注解的本质是什么 Transactional 这个注解仅仅是一些和事务相关的元数据在运行时被事务基础设施读取消 费并使用这些元数据来配置bean的事务行为。 大致来说具有两方面功能一是表明该方法要参 与事务二是配置相关属性来定制事务的参与方式和运行行为。 Transactional注解既可以标注在类上也可以标注在方法上。当在类上时默认应用到类里的所 有方法。如果此时方法上也标注了则方法上的优先级高。 另外注意方法一定要是public的。 声明式事务主要是得益于Spring AOP。使用一个事务拦截器在方法调用的前后/周围进行事务性 增强advice来驱动事务完成。
http://www.zqtcl.cn/news/530284/

相关文章:

  • 大学生做微商网站金华seo扣费
  • 以前老网站邯郸推广网络宣传哪家好
  • 网站建设技术网站建设奉节网站建设公司
  • 动漫视频网站模板动漫制作专业什么电脑最适合
  • 合网站建设注册一个500万的公司需要多少钱
  • 《网站推广策划》wordpress 写博客
  • 网站开发工程师面试问哪些问题免费下载软件商店安装
  • 建网站公司要钱吗公司制作网站跟企业文化的关系
  • 网站改版对用户的影响网站评论怎么做的
  • 许昌市做网站公司汉狮价格装修案例图片 效果图
  • 设计主题网站化肥厂的网站摸板
  • 做羊水亲子鉴定网站网络推广是啥
  • 怎样解析网站域名用哪个网站做首页比较好
  • 设计网站页面设计wordpress样式错乱
  • 静态网页模板免费网站wordpress悬浮按钮
  • 怎么制作学校网站大淘客网站代码
  • 如何做好一个网站wordpress 修改邮箱设置
  • 网站项目方案生态建设研究所网站
  • 用织梦做视频网站wordpress文章不能分段
  • 彩票网站开发. 极云邮箱类网站模板
  • 网站代运营协议网站 文件服务器
  • 专业网站设计公司有哪些绿色营销案例100例
  • 网站建设买了域名山东省作风建设网站
  • 留学中介网站建设方案设计企业品牌商标
  • 会展相关网站建设情况seo的基本步骤是什么
  • 太原网站建设鸣蝉公司免费网页制作网站建设
  • 中山专业网站建设网站开发基础知识简述
  • 包头索易网站建设中国建设银行网站余额查询
  • 哪家公司做网站开发做得比较好佛山商城网站制作
  • 可以做淘宝推广的网站优化网页设计是什么