Spring Boot
- Structuring your code
Spring Boot 不需要依赖其他额外的代码工作, 但是, 这里有一些好的建议.
1.1 Using the “default” package
当一个类不包含包声明那么它可以被认为是在 “default package”中的. 通常不建议使用 “default package”, 而且应该尽量避免. 对于那些用了 @ComponentScan
,@EntityScan
或者 @SpringBootApplication
注解的Spring Boot applications 会造成一些特定的错误, 因为每个包里的每个jar都会被注入进来.
1.2 Locating the main application class
我们建议你把 main
application class 反正root package中比所有其他的包都高一级. @EnableAutoConfiguration
注解通常会放在 main
class上, 这为特定的东西隐式的定义了一个基础的“search package”. 比如, 如果你在写一个 JPA application, 有使用了@EnableAutoConfiguration
注解的class的包 回去查找 @Entity
的items.
用来root package之后同样允许 @ComponentScan
注解在使用到时候可以不需要 basePackage
属性. 当main
方法在root package中的时候你也可以使用 @SpringBootApplication
注解。
典型工程结构:
com
+- example
+- myproject
+- Application.java
|
+- domain
| +- Customer.java
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- web
+- CustomerController.java
Application.java 文件中会包含 main
方法, 并且有 @Configuration
注解。
package com.example.myproject;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Spring Boot 偏好基于Java的配置. 虽然可以通过调用 SpringApplication.run()
通过一个 XML 源来配置, 但我们通常 推荐你的主源是一个 @Configuration
class. 通常这个class定义的main
方法也是一个主 @Configuration
的好的候选.
网上许多案例都用的XML配置.如果可以尝试使用相同的基于Java的配置. 可以通过搜索enable注解来尝试看看.
2.1 Importing additional configuration classes
你不需要把所有类都加上 @Configuration
注解。 @Import
注解可以用来引入添加的配置类. 同时, 也可以用 @ComponentScan
来自动的获取所有Spring组件, 包括 @Configuration
类.
2.2 Importing XML configuration
如果你非得要用XML配置, 我们还是建议从 @Configuration
类开始. 然后用 @ImportResource
注解来加载XML配置文件.
Spring Boot auto-configuration 希望通过之前添加的jar依赖来实现 自动的配置你的Spring Application. 比如, 如果 HSQLDB 在你的 classpath中, 而且你没有配置任何数据库相关的bean,这时我们会自动配置一个内存数据库. 你需要添加 @EnableAutoConfiguration
或 @SpringBootApplication
注解在某一个 @Configuration
类中。
你只能加一个 @EnableAutoConfiguration
注解. 通常建议加在主 @Configuration
类上.
3.1 Gradually replacing auto-configuration
Auto-configuration是非侵入的, 你可以用自己的配置来替换任意一段 auto-configuration. 比如, 如果你加了自己的 DataSource bean, 那么默认的嵌入式数据库会失效.
如果你想知道当前哪些 auto-configuration 正在被使用以及为什么, 通过打开debug开关的方式启动,auto-configuration报告会打印在console扣上。
3.2 Disabling specific auto-configuration
如果你发现某个被auto-configure应用的配置类不是你想要的,可以通过使用@EnableAutoConfiguration
注解来排除他们。
import org.springframework.boot.autoconfigure.*;
import org.springframework.boot.autoconfigure.jdbc.*;
import org.springframework.context.annotation.*;
@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
}
如果类不在 classpath中, 可以通过@EnableAutoConfiguration
注解的 excludeName 属性来排除,排除的时候使用全路径名称。最后,你还可以通过控制auto-configuration类的列表来排除 spring.autoconfigure.exclude
属性。
在属性中和注解上都能定义例外。
上一篇: RCP重启
下一篇: Chrome 49 Beta:CSS 自定义属性,使用 service workers 进行后台同步以及新的 ES2015 特性_html/css_WEB-ITnose
推荐阅读
-
spring cloud Eureka 配置信息
-
Mybaits 源码解析 (十)----- 全网最详细,没有之一:Spring-Mybatis框架使用与源码解析
-
手把手教你定制标准Spring Boot starter,真的很清晰
-
Spring在代码中获取bean的几种方式详解
-
spring boot 枚举使用的坑整理
-
浅谈Spring Security 对于静态资源的拦截与放行
-
boot.ini是什么文件 么修改boot.ini文件
-
九、Spring之BeanFactory源码分析(一)
-
02Spring基于xml的IOC配置--实例化Bean的三种方式
-
Spring源码分析之IoC容器初始化