zoukankan      html  css  js  c++  java
  • spring boot基础

    1.ANT下面典型的项目层次结构。
    (1) src存放文件。
    (2) class存放编译后的文件。
    (3) lib存放第三方JAR包。
    (4) dist存放打包,发布以后的代码。


    2.Source Folder在eclipse中就是放入class文件的路径,大家都熟悉的src就是Source Folder。
    当我们发布程序时,src下面的.Java文件都编译成了.class文件放入WEB-INFclasses文件夹下。
    3.你也可以建一个Source Folder,名字随便起,但记得它里面的内容最终发布时在被放在了WEB-INFclasses文件夹下。

    4.这不是我想说的,我想说的是路径问题。
    比如你建一个名为cong的Source Folder,里面放了一些配置文件,当别的配置文件引用conf里面的东西时,
    路径是WEB-INFclasses.就是说,conf里面东西的路径就是src的路径!
    你可以查看一下,发布完程序后,conf里面的东西和src里面的东西放在一块了,而且没有conf这个文件夹!

    5.所以我们可以认为:新建Source Folder,其实没有新建Source Folder,在视觉上我们感觉多了一个文件夹,
    这样好管理我们的东西,但最后它里面的东西和src下的东西放一块了。我们就认为所有的Source Folder就是一个src。
    所以路径的问题按照src路径处理就行。(你完全可以无视你新建的Source Folder).

    6.它们的区别如下:
    package:当你在建立一个package时,它自动建立到source folder下,也只能建立在这个目录之下.

    source folder:存放Java源代码的文件夹,当然也包括一些package文件夹,还可以包含其他文件.
    项目构建后,source folder里面的java自动编译成class文件到相应的/web-inf/classes文件夹中,其他文件也会移到/web-inf/classes相应的目录下.


    7. 一个Web Project引用多个Java Project在Eclipse下的配置.
    项目结构:
    项目由一个Web Project和多个Java Project构成,Web Project需要引用其它Java Project的类和Jar包。开发时用Eclipse3.5和Tomcat调试时,出现找不到引用的Java Project
    相关类和Jar包。经过一番摸索,终于调通了。以下是具体调试方法。

    8.1.配置Web Project的Java Build Path中的Projects

    找到Web Project的Java Build Path的Projects视图,点击右侧的Add按钮,选择要添加的Java Project。选择的结果示例如下:


    9.Eclipse Java Build Path详解
    :
    1.设置"source folder"与"output folder".

    * source folder:存放.java源文件的根目录;
    * output folder:.class编译输出的根目录;
    * 纯“java project”中,一般把"src"设置为source folder,把bin设置为output folder;
    * 在“web project”中,一般把"src"设置为source folder,把WEB-INF/classes设置为output

    2.4.Order and Export有两个属性。打勾与不打勾的区别在于导出jar包时是否将这个库的内容也打包到jar中,勾为包含,不勾为不含。


    5.mybatis模糊查询时,like关键字,要用${},不能用#{},因为like要用,%的。%China%
    因为#{}在数据库里执行的时候会被替换成“”包括,select * from table like name like %${value}%


    6.mybatis操控数据库是用sqlsessionFactory的,


    7.Spring Boot需要jdk1.8以上版本
    8. 项目产生的构件类型,例如jar、war、ear、pom。
    9.使用maven打包工程时,maven可以打包工程。maven用来打包项目。
    10.<exclusion> 排除依赖,解除对某个包的依赖 解决引入多个子项目时,不同子项目依赖不同版本的包,以哪个为准。
    11.<bulid>这部分是在对项目进行构建时所需要的配置,当你对项目进行编译,测试,打包,发布的时候,这部分配置就会在对应的阶段起作用了。build标签中可以包含很多插
    件,这些插件可以配置到项目的某些构建阶段,随着项目的构建进程发挥作用
    如何确定有哪些插件呢?

    <surefire> 运行单元测试和生成测试报告
    <compiler> 编译源代码和测试代码
    可参考开发的总pom,有 <compiler> 和 <eclipse> 的插件
    12.<dependencies>加入依赖。groupId, artifactId,version为必备


    14.构建工具。 用来构建项目,只需要简单的执行命令就可以。 对于个人开发有时候我们从开发到测试到最后打包可能都是一个人做,并且用一个开发工具就解决这些了,因为
    大多数开发工具IDE是自带打包功能的。 但是在实际的公司工作中,开发人员与测试人员、部署人员是分开的,部署人员是不会向开发人员要源代码,他们也不会打包,那么怎
    么部署呢? 开发人员开发后,确认没问题,将源代码放到版本控制服务器中,并且写一个脚本,这个脚本运行就可以自动打包,然后部署人员运行这个文件打包后部署。 那么
    这个脚本里面需要关系到目录与加载的文件等,这时候如果每个项目用的文件都不同,目录名字千奇百怪,那么就不容易统一管理,于是构建工具出现了,它规定你的目录必须
    要如何定制,这样方便统一管理。 Ant是比较好的构建工具,但是脚本目录要由自己写,命令中存在依赖关系,编译,打包。 编译目录还要自己指定,maven除了指定好目录,
    帮你打包,同时maven有一个中央库,这个可就厉害了,一般我们做项目引用一些第三方工具包,两个项目都要用,我们为了方便,会拷贝两份工具包到项目中,无形之中磁盘占
    用过大,maven中央库帮你下载需要的工具包,并且只需要在pom.xml引用即可,打包时自带进去,而不用平时跟着项目跑。 ant通常脚本名为build.xml,maven的胃pom.xml 。


    15.我们每个人,也许都在用不同的方法来抗拒现实。玩手机就是其中一种方法,还有喝酒,吸毒,甚至足球等等。所谓的不上进,也不是因为没有正常人的欲望,只不过是在用
    这些手段逃避现实。适当的调节身心还好,可一但过于沉迷,就会失去自我。不管什么时候,都要勇敢面对生活,勇于承担责任。

    作者:赵赶鹅
    链接:
    https://www.zhihu.com/question/55791476/answer/147051313
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


    20.之前我们创建基于Spring的项目需要考虑添加哪些Spring依赖和第三方的依赖。使用Spring Boot后,我们可以以最小化的依赖开始spring应用。大多数Spring Boot应用需要
    很少的配置即可运行,比如我们可以创建独立独立大Java应用,然后通过java -jar运行启动或者传统的WAR部署。其也提供了命令行工具来直接运行Spring脚本(如groovy脚本
    )。也就是说Spring Boot让Spring应用从配置到运行变的更加简单,但不对Spring本身提供增强(即额外的功能)。


    21.现象

    在eclipse里用subeclipe从svn上拖下来的项目,看不见java build path怎么办?


    原因

    那是因为你的两个配置文件:.project .classpath没有内容或者缺失。

    22.spring boot maven配置:
    spring-boot-starter-parent
    spring-boot-starter-web
    spring-boot-maven-plugin
    该插件支持多种功能,常用的有两种,第一种是打包项目为可执行的jar包。
    在我们开发过程中,我们需要经常修改,为了避免重复启动项目,我们可以启用热部署。

    Spring-Loaded项目提供了强大的热部署功能,添加/删除/修改 方法/字段/接口/枚举 等代码的时候都可以热部署,速度很快,很方便。
    想在Spring Boot中使用该功能非常简单,就是在spring-boot-maven-plugin插件下面添加依赖:

    <dependencies>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>springloaded</artifactId>
    <version>1.2.5.RELEASE</version>
    </dependency>
    </dependencies>

    添加以后,通过mvn spring-boot:run启动就支持热部署了。
    注意:使用热部署的时候,需要IDE编译类后才能生效,你可以打开自动编译功能,这样在你保存修改的时候,类就自动重新加载了。
    注意
    Spring Boot建议将我们main方法所在的这个主要的配置类配置在根包名下。
    @RestController

    因为我们例子是写一个web应用,因此写的这个注解,这个注解相当于同时添加@Controller和@ResponseBody注解。
    在Application.java中有main方法。

    因为默认和包有关的注解,默认包名都是当前类所在的包,例如@ComponentScan, @EntityScan, @SpringBootApplication注解。
    @EnableAutoConfiguration

    Spring Boot建议只有一个带有该注解的类。
    @EnableAutoConfiguration作用:Spring Boot会自动根据你jar包的依赖来自动配置项目。例如当你项目下面有HSQLDB的依赖时,Spring Boot会创建默认的内存数据库的数据源
    DataSource,如果你自己创建了DataSource,Spring Boot就不会创建默认的DataSource。

    如果你不想让Spring Boot自动创建,你可以配置注解的exclude属性,例如:

    @Configuration
    @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
    public class MyConfiguration {
    }

    @SpringBootApplication

    由于大量项目都会在主要的配置类上添加@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解。

    因此Spring Boot提供了@SpringBootApplication注解,该注解可以替代上面三个注解(使用Spring注解继承实现)。

    20.启动项目SpringApplication.run

    启动Spring Boot项目最简单的方法就是执行下面的方法:

    SpringApplication.run(Application.class, args);

    21.运行

    在IDE中直接直接执行main方法,然后访问http://localhost:8080即可。

    22.另外还可以用上面提到的mvn,可以打包为可执行jar包,然后执行java -jar xxx.jar。
    23.Spring Boot 支持多种外部配置方式

    这些方式优先级如下:

    命令行参数
    来自java:comp/env的JNDI属性
    Java系统属性(System.getProperties())
    操作系统环境变量
    RandomValuePropertySource配置的random.*属性值
    jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
    jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
    jar包外部的application.properties或application.yml(不带spring.profile)配置文件
    jar包内部的application.properties或application.yml(不带spring.profile)配置文件
    @Configuration注解类上的@PropertySource
    通过SpringApplication.setDefaultProperties指定的默认属性

    24.命令行参数

    通过Java -jar app.jar --name="Spring" --server.port=9090方式来传递参数。

    参数用--xxx=xxx的形式传递。

    可以使用的参数可以是我们自己定义的,也可以是Spring Boot中默认的参数。

    很多人可能会关心如web端口如何配置这样的问题,这些都是Spring Boot中提供的参数,部分可用参数如下:
    注意:命令行参数在app.jar的后面!

    25.应用配置文件(.properties或.yml)

    在配置文件中直接写:

    name=Isea533
    server.port=8080
    .yml格式的配置文件如:

    name: Isea533
    server:
    port: 8080

    当有前缀的情况下,使用.yml格式的配置文件更简单。


    27.23.6 Using YAML instead of Properties

    YAML is a superset of JSON, and as such is a very convenient format for specifying hierarchical configuration data. The SpringApplication class will
    automatically support YAML as an alternative to properties whenever you have the SnakeYAML library on your classpath.

    28.23.6.1 Loading YAML

    Spring Framework provides two convenient classes that can be used to load YAML documents. The YamlPropertiesFactoryBean will load YAML as Properties and
    the YamlMapFactoryBean will load YAML as a Map.

    27.To bind to properties like that using the Spring DataBinder utilities (which is what @ConfigurationProperties does) you need to have a property in the
    target bean of type java.util.List (or Set) and you either need to provide a setter, or initialize it with a mutable value, e.g. this will bind to the
    properties above

    28.@ConfigurationProperties(prefix="my")
    public class Config {

    private List<String> servers = new ArrayList<String>();

    public List<String> getServers() {
    return this.servers;
    }
    }

    29.23.6.2 Exposing YAML as properties in the Spring Environment

    The YamlPropertySourceLoader class can be used to expose YAML as a PropertySource in the Spring Environment. This allows you to use the familiar @Value
    annotation with placeholders syntax to access YAML properties.

    30.注意:使用.yml时,属性名的值和冒号中间必须有空格,如name: Isea533正确,name:Isea533就是错的。
    31.spring会从classpath下的/config目录或者classpath的根目录查找application.properties或application.yml。

    /config优先于classpath根目录

    32.Spring Boot 会自动将prefix="my"前缀为my的属性注入进来。

    Spring Boot 会自动转换类型,当使用List的时候需要注意在配置中对List进行初始化!
    33.Spring Boot 会自动将prefix="my"前缀为my的属性注入进来。

    Spring Boot 会自动转换类型,当使用List的时候需要注意在配置中对List进行初始化!

    34.Spring Boot 会将foo开头的属性按照名字匹配注入到FooComponent对象中。
    35.Spring Boot 会将foo开头的属性按照名字匹配注入到FooComponent对象中。

    36.Druid的简介

    Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss
    DataSource。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。

    37.Druid的功能

    1、替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。

    2、可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。

    3、数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。

    4、SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。

    5、扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。


    6.构建系统--maven或者gradle,最强大的地方在依赖管理dependency management。
    When you upgrade Spring Boot itself, these dependencies will be upgraded as well in a consistent way.

    7.13.2 Maven
    Maven users can inherit from the spring-boot-starter-parent project to obtain sensible defaults. The parent project provides the following features:

    Java 1.8 as the default compiler level.
    UTF-8 source encoding.
    A Dependency Management section, allowing you to omit <version> tags for common dependencies, inherited from the spring-boot-dependencies POM.
    Sensible resource filtering.
    Sensible plugin configuration (exec plugin, surefire, Git commit ID, shade).
    Sensible resource filtering for application.properties and application.yml including profile-specific files (e.g. application-foo.properties and
    application-foo.yml)

    30.13.2.3 Using the Spring Boot Maven plugin

    Spring Boot includes a Maven plugin that can package the project as an executable jar. Add the plugin to your <plugins> section if you want to use it:

    <build>
    <plugins>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    </plugins>
    </build>
    [Note]
    If you use the Spring Boot starter parent pom, you only need to add the plugin, there is no need for to configure it unless you want to change the settings
    defined in the parent.

    30.13.5 Starters
    Starters are a set of convenient dependency descriptors that you can include in your application. You get a one-stop-shop for all the Spring and related
    technology that you need, without having to hunt through sample code and copy paste loads of dependency descriptors. For example, if you want to get
    started using Spring and JPA for database access, just include the spring-boot-starter-data-jpa dependency in your project, and you are good to go.

    31.14.1 Using the “default” package
    When a class doesn’t include a package declaration it is considered to be in the “default package”. The use of the “default package” is generally
    discouraged, and should be avoided. It can cause particular problems for Spring Boot applications that use @ComponentScan, @EntityScan or
    @SpringBootApplication annotations, since every class from every jar, will be read.

    32.We generally recommend that you locate your main application class in a root package above other classes. The @EnableAutoConfiguration annotation is
    often placed on your main class

    33. @EnableAutoConfiguration注解

    第二个类级别的注解是 @EnableAutoConfiguration 。这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring。由于 spring-boot-starter-web 添加了Tomcat和
    Spring MVC,所以auto-configuration将假定你正在开发一个web应用并相应地对Spring进行设置。


    34.spring中为了减少xml中配置,可以生命一个配置类(例如SpringConfig)来对bean进行配置。
    not spring mvc 而是spring,是spring提供的configure注解,不是spring mvc
    <context:component-scan base-package="SpringStudy.Model">
    </context:component-scan>

    35.二、定义一个配置类

    用@Configuration注解该类,等价 与XML中配置beans;用@Bean标注方法等价于XML中配置bean。

    代码如下:

    36.@Configuration注解的类相当于一个xml配置文件,是相当于文件,是文件。不是注入,也不是生成,就是相当于一个xml文件。

  • 相关阅读:
    62-函数的调用
    40-字符串类型内置方法
    47-Python进阶小结
    44-集合的内置方法
    45-数据类型分类
    43-字典类型内置方法
    42-元组类型内置方法
    41-列表类型内置方法
    es6 Reflect对象详解
    微信小程序之公共组件写法
  • 原文地址:https://www.cnblogs.com/panxuejun/p/6591894.html
Copyright © 2011-2022 走看看