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

企业营销型网站建设优惠合肥有哪些公司是做网站的

企业营销型网站建设优惠,合肥有哪些公司是做网站的,查看网站流量的工具,平邑哪里有做网站的Spring是一个全面的全面的、企业应用开发一站式的解决方案#xff0c;贯穿表现层、业务层、持久层。但是 Spring 仍然可以和其他的框架无缝整合。 1、Spring的核心组件 #xff08;1#xff09;数据层#xff1a; JDBC、ORM、OXM、JMS、Transations #xff08;2#x…Spring是一个全面的全面的、企业应用开发一站式的解决方案贯穿表现层、业务层、持久层。但是 Spring 仍然可以和其他的框架无缝整合。 1、Spring的核心组件 1数据层 JDBC、ORM、OXM、JMS、Transations 2Web层 Web、Servlet、Portlet、Struts 3中间层 AOP、Aspects、Instrumentation 4核心容器 Beans、Core、Context、Expression Language 5测试层 Test 2、Spring IOC 原理 1概念 Spring通过一个配置文件描述Bean及Bean之间的依赖关系利用Java语言的反射功能实例化 Bean并建立Bean之间的依赖关系。Spring的IOC容器在完成这些底层工作的基础上还提供 了 Bean实例缓存、生命周期管理、Bean实例代理、事件发布、资源装载等高级服务。 2Spring容器高层视图 Spring启动时读取应用程序提供的Bean配置信息并在Spring容器中生成一份相应的Bean配置注册表根据这张注册表实例化Bean并将Bean实例存入Bean缓存池应用程序读取Bean缓存池中的Bean实例 3IOC容器实现 IOC容器依赖于BeanFactory是Spring框架的基础程序所以开发者操作的是ApplicationContext而非底层的BeanFactory。 Bean注册表 首先Spring配置文件中的每一个节点元素在Spring容器中都通过一个 BeanDefinition 对象表示它表述了 Bean 的配置信息而BeanDefinitionRegistry 接口提供了向容器手动注册 BeanDefinition 对象的方法。 获取Bean实例对象 BeanFactory 提供的最主要方法就是getBean(String beanName)方法调用该方法能从容器中返回一个特定名称的Bean。 访问容器中关于Bean的基本信息——ListableBeanFactory BeanFactory 的子类 ListableBeanFactory提供了访问容器内关于Bean 的基本信息如Bean的个数获取某一类型Bean的配置名、查看容器中是否包含某一Bean等方法。 父子级容器——HierarchicalBeanFactory 父子级联IOC容器实现的接口是HierarchicalBeanFactory子容器可以通过接口方法访问父容器由此建立的IOC级联容器体系中子容器可以访问父容器而父容器无法访问子容器。 Spring利用父子级联容器实现了很多功能例如 SpringMVC中View层的Bean位于一个子容器中而Service层和Dao层的Bean位于父容器中这样View层的Bean就可以引用Service层和Dao层的Bean了 拓展接口 —— ConfigurableBeanFactory 这是一个BeanFactory子类系列十分重要的接口它增强了IOC的可定制性它定义了设置类加载器、属性编辑器、容器初始化后置处理器等方法 自动装配——AutowireCapableBeanFactory 这个接口定义了容器中的Bean按某种规则如按名字匹配、按类型匹配等进行自动装配的方法。 注册单例Bean——SingletonBeanRegistry 这个接口定义了允许在运行期间向容器注册单例Bean的方法。 对于单例Bean对象来说BeanFactory会缓存Bean实例所以第二次调用getBean()获取Bean对象时会直接从IOC容器的缓存中获取Bean实例。 Spring 在 DefaultSingletenBeanFactory 类中提供了用于缓存单例Bean 缓存器这个缓存器使用HashMap实现单例Bena以beanName作为key进行存储。 BeanFactory依赖日志框架 在初始化 BeanFactory 时必须提供一种日志框架例如使用Log4j这样启动Spring容器时才不会报错。 BeanFactory提供给开发者的操作类——ApplicationContext ApplicationContext 继承于 HierarchicalBeanFactory 和 ListableBeanFactory 接口并由此拓展出其它功能接口 ClassPathXmlApplicationContext 默认从类路径加载配置文件FileSystemXmlApplicationContext 默认从文件系统中装载配置文件ApplicationEventPublisher 让容器拥有发布应用上下文事件的功能包括启动容器事件、关闭容器事件等MessageSource 为应用提供 il8n 国际化消息访问的功能ResourcePatternResolver 通过带前缀的Ant风格的资源文件路径装载Spring配置条件LifeCycle 这个接口是Spring 2.0 时加入的提供了start 和 stop 方法主要用来控制异步处理过程在具体使用中该接口会被ApplicaitonContext和Bean实例同时实现ApplicationContext 会将 start 和 stop 状态发布给所有实现了接口的Bean以达到管理和控制JMX、任务调度的目的ConfigurableApplicationContext 扩展了ApplicationContext主要是新增了两个方法refresh() 和 close()让ApplicationContext拥有了启动、刷新、关闭应用上下文的功能。 WebApplicationContext WebApplicationContext是专门为Web应用准备的它允许从相对于Web根目录的路径中装载配置文件完成初始化工作从WebApplicationContext中可以获得ServletContext的引用整个Web应用上下文对象将作为属性放置到ServletContext 中以便Web应用环境可以访问Spring应用上下文。 4Spring Bean的作用域 Spring 3.0 定义了五种Bean的作用域单例、原型、请求、会话、全局会话 singleton单例模式多线程不安全 Spring IOC容器只存在一个共享的 Bean 实例无论有多少个 Bean 引用它始终指向同一个对象但这种模式在多线程环境下是不安全的。prototype原型模式 Spring 每一次尝试获取原型模式的Bean对象时容器都将创建一个新的Bean提供给Spring。request请求模式 一次HTTP请求Spring创建一次新的Bean提供使用其生命周期随请求状态的销毁而销毁。session会话模式 一次Http Session 中容器返回的是同一个实例当重新开启一次Http Session容器会重新创建一个Bean实例提供使用请求结束实例销毁。global session全局会话模式 在一个全局Http Session中容器返回同一个Bean实例仅在protlet context时使用。 5Spring Bean的生命周期 SpringBean的生命周期实例化 —— 属性赋值 —— 初始化 —— 销毁 实例化 实例化一个Bean也就是我们常说的new 属性赋值 IOC 依赖注入 按照Spring Context对Bean实例进行配置setBeanName的实现 若Bean实现了BeanNameAware接口调用setBeanName(String beanId)方法setBeanFactory的实现 若Bean实现了BeanFactoryAware接口调用setBeanFactory(BeanFacrtory beanFactory)方法setApplicationContext的实现 若Bean实现了ApplicationContextAware接口调用setApplicationContext(ApplicationContext applicationContext)方法可以实现设置BeanFactory方法并比BeanFactoryAware更加优秀postProcessBeforelnitialization的实现 若Bean实现了BeanPostProcessor接口将调用postProcessBeforelnitialization(Object obj, String s)方法BeanPostProcessor经常用于Bean内容的修改并且Bean初始化结束后也会调用这个方法也可以应用于内存或缓存技术。 初始化 init-method 若Bean在配置文件中定义了初始化方法则在初始化阶段会自动调用配置的初始化方法。postProcessAfterInitialization的实现 若Bean实现了BeanPostProcessor接口调用postProcessAfterInitialization(Object obj, String s)方法。 销毁 destroy 过期自动清理阶段 当Bean不再需要时会经历清理阶段若 Bean 实现了 DisposableBean 接口则调用destroy()方法进行销毁。destroy-method 自配置清理 若Bean的配置文件中设置了destroy方法时则自动调用自定义的destroy方法 6Spring 依赖注入的方式 Spring 提供的依赖注入的方式构造器注入、set方法注入、静态工厂注入、实例工厂注入 构造器注入案例 public CatDaoImpl(String message){this.message message; }bean idCatDaoImpl classclass.CatDaoImplconstructor-arg valuemessage/constructor-arg /beansetter方法注入 public class Id{private int id;public int getId(){return id;}public void setId(int id){this.id id;} }bean idid classcom.Idproperty nameid value123/property /bean静态工厂注入 // 对外提供的静态工厂 public class DaoFactory{public static final FactoryDao getStaticFactoryDaoImpl(){return new StaticFactoryDaoImpl;} }//使用静态工厂的类 public class SpringAction{//注入对象private DaoFactory staticFactoryDao;//注入对象的set方法public void setStaticFactoryDao(FactoryDao staticFactoryDao){this.staticFactoryDao staticFactoryDao;} }//给调用类注入静态工厂 bean namespringAction classcom.SpringActionproperty namestaticFactoryDao refstaticFatoryDao/property /bean//给静态工厂中的成员注入 bean namestaticFatoryDao classcom.DaoFactory factory-methodgetStaticFactoryDaoImpl/bean实例工厂注入 //创建一个实例工厂 public class DaoFactory{public DaoFactory getFactoryDaoImpl(){return new FactoryDaoImpl(); } }//调用类使用实例工厂 public class SpringAction{private DaoFactory daoFactory;public void setDaoFactory(DaoFactory daoFactory){this.daoFactory daoFactory;} }//为调用类注入实例工厂Bean对象 bean namespringAction classSpringActionproperty namedaoFactory refdaoFactory/property /bean//管理实例工厂先声明注入的类再配置实例工厂的成员 bean namedaoFactory classcom.DaoFactory/bean bean namefactoryDao factory-beandaoFactory factory-methodgetFactoryDaoImpl/bean7自动装配的实现方式 Spring装配包括手动装配和自动装配手动装配是基于 xml 装配、构造方法、setter方法等。 自动装配一共有5种实现方式 no 默认不自动装配通过显式的 ref 属性进行装配byName 通过参数名自动装配Spring在配置文件中检测到Autowired属性被设置为byName容器自动按照beanName进行注入byType 通过参数类型自动装配Spring在配置文件中检测到Autowired属性被设置为byType容器自动按照type进行注入若有多个匹配对象则抛出错误constructor 类似于byType但必须提供构造器参数若没有确定参数的构造器参数类型则抛出异常autodetect 首先尝试使用 构造器参数 装配若无法工作则使用byType方式 3、Spring AOP 的原理 1概念 AOP是一种“横切”技术将多个类的公共模块抽取到一个模块中并将其命名为**“Aspect”**即切面。 2AOP的两个部分 核心关注点、横切关注点 核心关注点 业务处理的主要流程横切关注点 一切与业务代码无相关的代码 3AOP的应用场景 Authentication 权限Caching 缓存Context passing 内容传递Error handling 错误处理Lazy loading 懒加载Debugging 调试logging, tracing, profiling and monitoring 记录跟踪 优化 校准Performance optimization 性能优化Persistence 持久化Resource pooling 资源池Synchronization 同步Transactions 事务 4AOP的核心概念 切面Aspect 类是对物体特征的抽象切面是对横切关注点的抽象横切关注点 对哪些对象进行拦截、如何处理这些关注点都是横切关注点连接点JoinPoint 被拦截到的点因为Spirng只支持方法类型的连接点所以Spirng中连接点就是被拦截方法实际上连接点还可以是字段、构造方法切入点PointCut 对连接点进行拦截的定义通知Advice 所谓的通知就是拦截到连接点后要执行的代码分为前置、后置、异常、最终、环绕通知等类型目标对象 代理的目标对象织入weave 将切面应用到目标对象并导致代理对象创建的过程引入introduction 不修改代码的前提下引入可以在运行期为类动态地添加一些方法或字段 5AOP的代理方式 Spring 提供了两种AOP的代理方式JDK接口动态代理、CGLib动态代理 JDK接口动态代理 被代理类实现InvocationHandler通过实现该接口定义横切逻辑并通过反射机制调用目标类的代码动态地将横切逻辑和业务逻辑编织在一起代理类通过InvocationHandler接口动态创建一个实例生成目标类的代理对象 GCLib动态代理 GCLib的全称是Code Generation Library是一个高性能、高质量的代码生成类库可以在运行期间动态扩展Java类和实现Java接口CGLib封装了ASM可以在运行期间生成新的class对比JDK动态代理CGLib可以动态代理未实现接口的类。 6AOP的实现原理 Aspect public class TransactionDemo {Pointcut(valueexecution(* com.yangxin.core.service.*.*.*(..))) public void point(){}Before(valuepoint())public void before(){System.out.println(transaction begin);}AfterReturning(value point())public void after(){System.out.println(transaction commit);}Around(point())public void around(ProceedingJoinPoint joinPoint) throws Throwable{ System.out.println(transaction begin);joinPoint.proceed();System.out.println(transaction commit);} }4、Spring MVC 的原理 MVC指的是Modal模型View视图Controller控制器Spring MVC框架是围绕 DispatcherServlet 而设计的这个Servlet会将请求分发到各个控制器并支持可配置的处理器映射、视图渲染、本地化、时区与主题渲染等甚至还能支持文件上传。 1浏览器请求的全过程 浏览器发送HTTP请求DispatcherServlet接收DispatcherServlet轮询处理器通过HandlerMapping进行查找适用的Controller当HandlerMapping查找到处理器后DispatcherServlet调用处理器将请求发送给ControllerController调用Service层业务逻辑获取返回值后分发到ModalAndView对象DispatcherServlet监听ModalAndView响应结果DispatcherServlet得到结果后分发给Model对象并轮询视图映射ViewResolver查找到指定的视图Modal将结果反应到视图View向浏览器发送响应体 2MVC常用注解 组件注解 Controller、RestController、Component、Repository、Service 请求注解 RequestMapping、Autowired、PathVariable、RequestParam、RequestHeader 5、MyBatis缓存 MyBatis拥有两级缓存默认情况下开启一级缓存二级缓存由开发者手动开启。 一级缓存是会话级别的缓存当同一会话调用同一个SQL时优先从缓存中读取数据。 二级缓存是映射级别的缓存不同的SQL会话可以共享该缓存 1一级缓存的原理 当用户线程第一次发出查询sqlsql的查询结果会写入到sqlSession的一级缓存中缓存使用的是Map结构其中key mapperID offset limit SQL 所有入参value 用户信息当同一个sqlSession再次发出同一个sql请求就从缓存中取出数据若两次查询中间发生更新操作则本sqlSession中的一级缓存区域全部清空所以第二次请求会从数据库中查询并写入到新的缓存中去。 2二级缓存的原理 二级缓存的范围是mapper同命名空间的mappermapper以命名空间为单位创建缓存数据结构结构是 map通过 CacheExecutor 实现的。 CacheExecutor是Executor的代理对象所有的查询操作在CacheExecutor都会先查询缓存再查询数据库。 3如何配置二级缓存 MyBatis 全局配置中启用二级缓存配置对应的mapper配置cache节点对应的select查询节点添加useCachetrue
http://www.dnsts.com.cn/news/3485.html

相关文章:

  • 成都网站建设 工作室wordpress 主题单页
  • 制作视频网站开发网站建设在线培训
  • 网站建设国内排行深圳坑梓网站建设
  • 线上企业订单管理系统网站安徽建工集团招标信息集采平台
  • 企业大型网站开发适合大型网站的流量套餐
  • 网站开发的理解同ip网站怎么做
  • 网站开发的报告动漫制作专业
  • 网络营销的看法和理解石家庄百度推广排名优化
  • 徐州网站建设多少钱五金配件东莞网站建设技术支持
  • 建立网站目录结构应遵循的方法和建议佛山优化网站方法
  • win10 建网站露兜博客 wordpress
  • 千图素材网站网站开发合作协议书
  • 网站专题页陈村网站设计
  • 青岛主流网站互联网保险公司排行榜
  • 衡阳网站开发阿里巴巴国际站app
  • 为什么网站要备案宁波网站推广优化联系电话
  • 网站备案号怎么放网站服务器建设
  • 网站建实例云南网站建设快速排名
  • 专门做优选的网站广州门户网站建设方案
  • 深圳网站建设ejiew新翼设计网站建设公司
  • 网站制作技术支持ai海报设计
  • 专业长沙做网站公司网站建设发展方向
  • 蚌埠网站关键词优化wordpress 标题空格
  • windows 2003做网站wordpress设置文件大小
  • 苏州网站建设熊掌家庭 wordpress
  • 做淘宝要网站?wordpress创建模板
  • 明年做那些网站能致富东营网站seo外包
  • 网站制作流程有哪些步骤?属于微营销的是
  • 网站建设 后端开发软件东莞阳光网官网手机版
  • 网站三网合一网站建设运营计划书