Springboot第一天之重识maven

Spring

 要学springboot先弄懂maven

Maven:

  1. 父工程并没有什么实质性的内容,所有的jar包都在里面,也就是说只需要管理jar即可
  2. 在父工程中有很多子模块,每一个子模块都代表了不同的包(package:entitymapperserviceimplcontroller

思考问题?

    model项目中用不到shiro,但是父子工程的规则也需要把shirojar加载进来,影响项目的进度和运行速度,如何解决?

    <denpencyManagement>标签

        被<denpencyManagement>所控制的jar包,不会被子工程所继承,如果子工程有需要,可以重写父工程中的jar包,并且不需要携带版本号

        如果不省略版本号,则jar包会从maven中进行下载,并不再是从父工程中重写的jar

    方便了整个项目的管理,解决了jar包冗余的问题

 

思考问题?

    一旦开始分模块开发的时候,之前的所有包都会被拆分成一个一个的项目

    model

    mapper

    service

    ...

    其实mapper需要model的支持,如果解决问题?

        使用工程依赖

        在mapper项目中的pom.xml文件中以jar包的形式引入model项目即可

    一旦使用量的工程依赖,就会出现层级依赖

 

思考问题?

    使用了层级依赖,上级中所引用的jar包,下级是否可以使用?

        可以!!!!

        mapper

        service

        web

        都使用到了shirojar包,因为这三个项目是一个层级依赖的关系,只需要在mapper项目中引入shirojar包即可!

 

定义实体类的标准:

    1.需要实现序列化接口

    2.需要重写hashCodeequalse

    3.需要重写toString()

    4.必须有gettersetter方法

5.要求所有的类型全部为包装类型,不能使用基本类型(因为使用包装类型可以防止空指针异常)

 

SpringBoot

  what?

  why?

  where?

  which?

  how?

 

  我不知道我不知道

  我知道我不知道

  我知道我知道

  我不知道我知道

 

Springboot

  1. 什么是springboot,什么是spring
    1.   spring 是一个开源框架,Spring 为简化企业级应用开发而生,使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能。Spring 是一个 IOC 和 AOP 容器框架。 Spring 主要核心是:
    2. (1)控制反转(IOC):传统的 java 开发模式中,当需要一个对象时,我们会自己创建一个对象,而在 Spring 开发模式中,Spring 容器使用了工厂模式为我们创建了所需要的对象,我们直接调用 Spring 为我们提供的对象即可,这就是控制反转的思想。实例化一个 java 对象有三种方式:使用类构造器,使用静态工厂方法,使用实例工厂方法。当使用 spring 时我们不需要关心通过何种方式实例化一个对象,spring 通过控制反转机制自动为我们实例化一个对象。

      (2)依赖注入(DI):Spring 使用 Java Bean 对象的 Set 方法或者带参数的构造方法为我们在创建所需对象时将其属性自动设置所需要的值的过程就是依赖注入的基本思想。

      (3)面向切面编程(AOP):在面向对象编程(OOP)思想中,我们将事物纵向抽象成一个个的对象。而在面向切面编程中,我们将一个个对象某些类似的方面横向抽象成一个切面,对这个切面进行一些如权限验证,事物管理,记录日志等公用操作处理的过程就是面向切面编程的思想。

      在 Spring 中,所有管理的对象都是 JavaBean 对象,而 BeanFactory 和 ApplicationContext 就是 spring 框架的两个 IOC 容器,现在一般使用 ApplicationContext,其不但包含了 BeanFactory 的作用,同时还进行更多的扩展。

    Springbootspring生态圈的一个轻量级框架,换句话说springboot就是spring,是spring一个衍生版本

    如果是spring框架,项目搭建完毕,无法实现任何代码,也就是说spring没有办法去帮助开发人员去连接数据库,对数据库做增删改查,也没有办法自动把shiro集成进来,需要开发人员手动配置xml文件,自己进行整合Springboot其实就是集成害了很多的框架的spring,直接根据springboot所提供的标准化编写配置即可,不再需要编写xml配置文件,springboot官方给出的解释就是干掉xml文件,使用java代码进行编写配置

 

通过java类来替代xml

  1. 为什么要用springboot来替代springboot

    傻瓜式开发,减少了大量配置,降低了开打人员的标准,低层次的开发人员也可以进行编写业务逻辑,不再需要了解内部运行原理以及框架的集成和整合

  1. Springboothello Word

  3.1@SpringbootApplication

  Springboot的运行原理

  作用是实现了自动的配置

  @SpringbootApplication是一个组合注解

    @SpringBootConfiguration:springboot所必须要的基础配置(application.xml

    @EnableAutoConfiguration:自动加载配置

  @EnableAutoConfiguration是一个组合注解

    @AutoConfigurationPackage:通过扫描包的形式自动加载(eg:mybatismapper扫描器)

    @Import:导入(在application.xml配置文件中<import/>

  EnableAutoConfigurationImportSelector:自动加载配置的选择器(根据条件进行自动加载配置)继承了AutoConfigurationImportSelector

  AutoConfigurationImportSelector类中有一个方法

    getCandidateConfigurations():根据某个特定的条件获取配置信息

  loadFactoryNames():根据name的属性值来获取加载器信息是根据了META-INT/spring.factories文件进行加载配置,根据factories文件映射到了配置类中,用MybatisAutoConfiguration.java是经过xml配置文件转换来的,和xml文件一样的作用

  DataSource

  SqlSessionFactory

  sqlSessionTemplate

 

  3.2添加mybatis的依赖后,再次启动会抛异常

  Mybatis框架已经被集成进项目中,但是mybatis最终目的是操作数据库,mybatis并没有找到数据源的配置信息,所有导致项目出错

  解决问题:配置数据源信息

  Resources Application.yml

  每行后敲一个空格

  #配置tomcat
server:
port: 8077 # 配置tomcat的端口号
context-path: /test # 配置tomcat的根路径(如果不配置,则默认为"/")
#配置数据源
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/zk
data-username: root
data-password: 995812

3.3配置数据库

按照springboot所规定的的形式配置数据库

在官方文档中说明

可以使用文件进行配置数据源信息(就是springboot的主配置文件,也是以后操作最多的文件)

Properties

yml

命名有规范:

文件名必须用spplication,否则springboot无法识别

application.properties

Application.yml

存放位置有规定:

官方推荐把配置文件放在resources目录(classpath-->config文件夹,如果config文件夹springboot没有检测到会从resources目录下去找resourcesclasspath(根目录)

resource/config

3.4替换和关闭banner

springboot项目启动的时候,会自动加载spring所提供的banner

替换banner

需要在resources(classpath)目录中创建文件banner.txt

关闭banner

SpringApplication springApplication=new SpringApplicatin(ApplicationRun.class);

springApplication.setBannerMode(Banner,Mode.OFF);

springApplication.run(args);

面试题:

如何区分轻量级和重量级?

在项目中轻量级的框架会对自己项目中的代码有很少侵入

hibernate

hql:from User

mybatis

sql:select * from table_name

posted @ 2019-08-21 09:08  普通家庭  阅读(216)  评论(0)    收藏  举报