一、SpringBoot精要

来源:互联网 发布:python上位机 编辑:程序博客网 时间:2024/06/04 19:43

使用“默认”包

当一个类不包含package声明时,它被认为是在“默认包”中。通常不鼓励使用“默认包”,应该避免使用。这可能会导致使用Spring的启动应用程序的特殊问题。
会产生如下错误:

Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package.

建议您遵循Java推荐的软件包命名约定,并使用反向域名(例如com.example.project)。

定位main应用类

通常建议你将main应用类放在位于其他类上面的根包(root package)中。通常使用 @EnableAutoConfiguration 注解main类,并且暗地里为某些项定义了一个基础“search package”。

使用根包允许你使用 @ComponentScan 注解而不需要定义一个 basePackage 属性。如果main类位于根包中,你也可以使
用 @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@ComponentScanpublic class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}}

配置类

Spring Boot提倡基于Java的配置。尽管你可以使用一个XML源来调用 SpringApplication.run() ,我们通常建议你使用 @Configuration 类作为主要源。一般定义 main 方法的类也是主要 @Configuration 的一个很好候选。

导入其他配置类

你不需要将所有的 @Configuration 放进一个单独的类。 @Import 注解可以用来导入其他配置类。另外,你也可以使用 @ComponentScan 注解自动收集所有的Spring组件,包括 @Configuration 类。

导入XML配置

你可以使用附加的 @ImportResource 注解加载XML配置文件。

自动配置

Spring Boot自动配置(auto-configuration)尝试根据你添加的jar依赖自动配置你的Spring应用。例如,如果你的classpath下存在 HSQLDB ,并且你没有手动配置任何数据库连接beans,那么我们将自动配置一个内存型(in-memory)数据库。

你可以通过将 @EnableAutoConfiguration 或 @SpringBootApplication 注解添加到一个 @Configuration 类上来选择自动配置。
注:你只需要添加一个 @EnableAutoConfiguration 注解。我们建议你将它添加到主 @Configuration 类上。

禁用特定的自动配置

如果发现应用了你不想要的特定自动配置类,你可以@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 {}

Spring Beans和依赖注入

你可以自由地使用任何标准的Spring框架技术去定义beans和它们注入的依赖。简单起见,我们经常使用 @ComponentScan 注解搜索beans,并结合 @Autowired 构造器注入。

如果使用上面建议的结构组织代码(将应用类放到根包下),你可以添加 @ComponentScan 注解而不需要任何参数。你的所有
应用程序组件( @Component , @Service , @Repository , @Controller 等)将被自动注册为Spring Beans。

使用@SpringBootApplication注解

很多Spring Boot开发者总是使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan 注解他们的main类。由于这些注解被如此频繁地一块使用(特别是你遵循以上最佳实践时),Spring Boot提供一个方便的 @SpringBootApplication 选择。

package com.example.myproject;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScanpublic class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}}

@SpringBootApplication开启了spring的组件扫描和自动配置功能。实际@SpringBootApplication将三个注解合在了一起:
1. spring的@Configuration: 表明该类使用了spring基于Java的配置。
2. Spring的@componentScan:启用组件扫描,这样组件可以被扫描到
3. SpringBoot的@EnableAutoConfiguration:开启了springboot的自动配置

0 0
原创粉丝点击