1 关于maven项目构建知识点
在Maven里,可以用<exclusions>元素来排除传递依赖。下面这个引入Spring Boot的
pom.xml的<dependency>增加了<exclusions>元素去除Jackson:<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
</exclusion>
</exclusions>
</dependency>
另一方面,也许项目需要Jackson,但你需要用另一个版本的Jackson来进行构建,而不是Web 起步依赖里的那个。假设Web起步依赖引用了Jackson 2.3.4,但你需要使用2.4.31。在Maven里, 你可以直接在pom.xml中表达诉求,就像这样:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.3</version>
</dependency>
Maven总是会用最近的依赖,也就是说,你在项目的构建说明文件里增加的这个依赖,会覆 盖传递依赖引入的另一个依赖。
2 application.properties
#server server.port=8080 server.tomcat.uri-encoding=utf-8 #MySQL spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=123456 #Spring Data JPA spring.jpa.database=MYSQL spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update # Naming strategy spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy # stripped before adding them to the entity manager) spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect #视图层控制 spring.mvc.view.prefix=classpath:/templates/ spring.mvc.view.suffix=.html spring.mvc.static-path-pattern=/static/**
#关于日志的配置方法 logging.level.root=info logging.level.org.springframework.security=debug logging.path=classpath:/var/logs/ logging.file=BookWorm.log
3 Spring Data JPA
JpaRepository包含的两个参数代表的含义:仓库操作的领域对象类型,及其ID属性的类型
4 Spring MVC
在spring mvc中重定向使用以下方法: return "redirct:/{reader}" ;5 Spring Boot
自动配置中使用的条件化注解
@ConditionalOnBean 配置某个特定的bean @ConditionalOnMissingBean 没有配置特定的bean @ConditionalOnClass classpath中有指定的类 @ConditionalOnMissingClass classpath中缺少指定的类 @ConditionalOnExpression 给定的Spring Expression Language(SpEL)表达式计算结果为true @ConditionalOnJava Java的版本匹配特定值或者一个范围值
@ConditionalOnJndi 参数中给定的JNDI位置必须存在一个,如果没有给参数,则要有JNDIInitialContext
@ConditionalOnProperty 指定的配置属性要有一个明确的值
@ConditionalOnResource Classpath里有指定的资源
@ConditionalOnWebApplication 这是一个Web应用程序
@ConditionalOnNotWebApplication 这不是一个Web应用程序
application.properties和application.yml文件能放在以下四个位置。
(1) 外置,在相对于应用程序运行目录的/config子目录里。
(2) 外置,在应用程序运行的目录里。
(3) 内置,在config包内。
(4) 内置,在Classpath根目录。同样,这个列表按照优先级排序。也就是说,/config子目录里的application.properties会覆盖
应用程序Classpath里的application.properties中的相同属性。此外,如果你在同一优先级位置同时有application.properties和application.yml,那么application.
yml里的属性会覆盖application.properties里的属性。