javaEE 入门

1. SSH框架到底是什么?(过时的概念 )  


2.maven + spring + springboot + springmvc + mybatis (现在最流行的框架组合)


  1)Spring框架是一个轻量级的企业级开发的一站式解决方案。所谓方案是可以基于Spring解决Java EE开发的所有问题。Spring框架主要提供了IoC容器、AOP、数据访问、Web开发、消息、测试等相关技术的支持。


  2)Springboot
    为了解决Java开发的笨重:繁多的配置、低下的开发效率、复杂的部署流程以及第三方技术集成的难度大====> Springboot


  3)springmvc  
    MVC:Model + View + Controller(数据模型+视图+控制器),MVC中的M是数据模型,是包含数据的对象。
    springmvc只用于web layer,service,dao这些都是为了方便后端读取数据,和MVC一点关系都没有。


  4)Hibernate(不属于Spring体系)
    对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
    缺点:利用JDBC的API需要编写复杂重复且冗余的代码,而使用ORM(例如Hibernate)工具需要基于一些假设和规则 


  5)mybatis
    一种混合型解决方案——Mybatis。Mybatis是一个持久层框架,它从各种数据库访问工具中汲取大量优秀的思想,适用于任何大小和用途的数据库。根据官方文档的描述:MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。


3.框架基础:反射机制Reflection  
  Java反射机制可以让我们在编译期之外的运行期(Runtime)获得任何一个类的字节码;包括接口、变量、方法等信息。还可以让我们在运行期实例化对象,通过调用get/set方法获取变量的值。


  1)Java的Class类
    * 用来保存Java类的类型信息
    每个class都有一个相应的Class对象。也就是说,当我们编写一个类,编译完成后,在生成的class文件中,就会产生一个Class对象,用于表示这个类的类型信息。
    Class类没有公共构造方法。Class对象是在加载类时由Java虚拟机以及通过调用类加载器中的defineClass方法自动构造的,因此不能显式地声明一个Class对象。


  * 每种类型对应一个不同的Class对象
    虚拟机为每种类型管理一个独一无二的Class对象。也就是说,每个类(型)都有一个Class对象。运行程序时,Java虚拟机(JVM)首先检查是否 所要加载的类对应的Class对象是否已经加载。如果没有加载,JVM就会根据类名查找.class文件,并将其Class对象载入。
  基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也都对应一个 Class 对象。
  * 一般某个类的Class对象被载入内存,它就用来创建这个类的所有对象。
    
    参考:http://jiangsha.iteye.com/blog/1632661


  2)动态加载类
    * new 出来的都是静态加载类,一招出错,全盘皆输;(编译时加载类)


    * newInstance()用于动态加载类
    Class c = Class.forName(args[0]);
    OfficeAble oa = (OfficeAble)c.newInstance();//OfficeAble定义的功能类型接口


    集合泛型的本质ArrayList()
    * 反射的操作都是编译之后的操作;就是运行阶段
    * java中集合的泛型是防止错误输入的;只在编译阶段有效,只要绕过编译就无效啦;我们可以通过方法的反射来操作,绕过编译


  
4.框架基础:java注解
  1)JDK中的注解:
    @Override:重写父类的该函数。
    @Deprecated: 表示该函数已过时。
    @SuppressWarning:忽略某某警告


  2)Spring中的注解(第三方注解)
    @Autowired:可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。
    @Service:定义某个类为一个bean,则在这个类的类名前一行使用@Service就相当于讲这个类定义为一个bean,bean名称为XXX。而无需去xml文件内去配置。
    @Repository用于标注数据访问组件,即DAO组件。
 
    mybatis中的注解
    @InsertProvider @UpdateProvider @OPtions




5.Spring框架
  Spring使用简单的POJO(无任何限制的普通Java对象)来进行企业级开发。每一个被Spring管理的Java对象都称之为Bean;而Spring提供了一个IOC容器用来初始化对象,解决对象间的依赖管理和对象的使用。


  * bean是什么符合下面规范的Java对象
    一种规范,表达实体和信息的规范,便于封装重用。具体是:
    *所有属性为private
    *提供默认构造方法
    *提供getter和setter
    *实现serializable接口
 
  * 控制反转Ioc通过依赖注入实现
    意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。
    有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。


    IoC实现原理:IoC利用的是Java的反射机制,Spring还充当了工厂的角色,我们不需要自己建立工厂类,Spring的工厂类会帮我们完成配置文件的读取、利用反射机制注入对象等工作,我们可以通过bean的名称获取对应的对象。


  * aop面向切面的编程
    通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP将应用系统分为两个部分:核心业务逻辑以及[横向的通用逻辑],也就是所谓的面。
    主要是用于系统级别的功能,例如:日志记录、性能统计、安全控制、事务处理、异常处理等等这些主要功能。




  * 核心模块
    
    * 核心容器:提供了Spring框架的基本功能,核心容器的主要组件是BeanFactory,他是工厂模式的实现。BeanFactory使用控制反转
      的模式将应用程序的配置、依赖性规范与实际的应用程序代码相分开。
      [包]Spring Core:包含Spring框架的基本核心工具类,Spring其他组件都需要使用这个包,是其他组件的基本核心。
      [包]Spring Beans:包含访问配置文件,创建和管理Bean以及进行控制反转和依赖注入操作相关的所有类。如果应用只需要基本的IOC和DI的支持的话,只需要引入Spring Core jar文件和Spring Bean jar文件即可。


    * 应用上下文:是一个配置文件,向Spring模块提供上下文信息。
      [包]Spring Context:这个jar文件为Spring的核心提供了大量扩展,能够找到使用Spring AppliContext特性时所需要的全部类,JNDI所需要的全部类,UI方面用来和模版引擎和校验方面的相关类。以上的就是Spring工程最核心也是最基础的开发包。


    * aop模块:通过配置管理特性,SpringAOP模块直接将面向切面的编程功能集成到了Spring框架当中。
      所以,可以很容易的使Spring框架管理的任何对象都可以支持AOP。
      [包]SpringAOP:包含了使用SpringAOP特性时所需要的类,利用这个jar文件我们可以使用基于AOP的Spring特性。如声明性的事物管理,日志系统引入等等


    * JDBC和dao模块:属于抽象层。


    * 对象实体映射orm:和数据库的关系映射。


    * MVC模块(Spring WebMVC):Spring的MVC是一个全功能的构建Web应用程序的MVC的实现。通过策略接口,MVC框架变成为高度可配置的。
      MVC容纳了大量视图技术。模型来由JavaBean来构成,存放与Map当中。而视图是一个接口,负责实现模型。控制器是一个逻辑代码,是Control的实现。
  
  * spring框架的四大原则
    1)使用POJO进行轻量级和最小侵入开发
    2)通过依赖注入和基于接口编程实现松耦合
    3)通过 aop和默认习惯进行声明式编程
    4)使用aop和模板(template)减少模式化代码


    


6.Springmvc框架:它用于web层,相当于controller(等价于传统的servlet和struts的action),用来处理用户请求。


  * 核心类与接口
    DispatcherServlet   前置控制器(servlet中的子类)
    HandlerMapping      请求映射(到Controller)
    HandlerAdapter      请求映射(到Controller类的方法上)
    Controller          控制器
    HandlerIntercepter  拦截器
    ViewResolver        视图映射
    View                视图处理
  
7.Spring data jpa框架
  
  * 虽然ORM框架都实现了JPA规范,但是在不同ORM框架之间切换是需要编写的代码有一些差异,而通过使用Spring Data Jpa能够方便大家在不同的ORM框架中间进行切换而不要更改代码。
    封装了Hibernate、Toplink、openJpa等orm框架,mybatis属于半orm的框架。
    
  * hibernate是持久化实现技术,而jpa是持久化的标准,一个是具体实现,一个是接口协议。




8.其他的应用组件
  
  * 模板引擎:spring-thymeleaf
  * jdbc框架:JdbcTemplate
  * 测试组件:spring-test单元测试
  * 日志组件:logback/log4j等日志组件

你可能感兴趣的:(程序类)