spring boot基础

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


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

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

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

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。选择的结果示例以下:session


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

* 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的功能

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

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

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

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

五、扩展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.2、定义一个配置类

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

代码以下:

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

相关文章
相关标签/搜索