当前位置: 首页 > news >正文

springboot入门之路(二)

系列文章目录

  • springboot入门之路(一)连续的学习渐进之路。阅读点击:springboot入门之路(一)

在这里插入图片描述

文章目录

  • 系列文章目录
      • 3.springboot配置及注意事项
        • 3.1继承starter parent
        • 3.2使用没有父POM的Spring Boot
        • 3.3配置java的编译的版本
        • 3.4使用"default"包
        • 3.5 定位main应用类
        • 3.6 自动配置
        • 3.7 Spring Beans和依赖注入
        • 3.8 @SpringBootApplication注解的解释


3.springboot配置及注意事项

3.1继承starter parent
  • 想配置你的项目继承 spring-boot-starter-parent 只需要简单地设置 parent 为:
<!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<type>pom</type>
</parent>
  • 注:你应该只需要在该依赖上指定Spring Boot版本。如果导入其他的starters,你可以放心的省略版本号。
3.2使用没有父POM的Spring Boot
  • 不是每个人都喜欢继承 spring-boot-starter-parent POM。你可能需要使用公司标准parent,或你可能倾向于显式声明所有
    Maven配置。

  • 如果你不使用 spring-boot-starter-parent ,通过使用一个 scope=import 的依赖,你仍能获取到依赖管理的好处:

<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.3.0.BUILD-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
3.3配置java的编译的版本
spring-boot-starter-parent 选择相当保守的Java兼容策略。如果你遵循我们的建议,使用最新的Java版本,你可以添加一
个 java.version 属性:
<properties>
<java.version>1.8</java.version>
</properties>
3.4使用"default"包
  • 当类没有包含 package 声明时,它被认为处于 default package 下。通常不推荐使用 default package ,并应该避免使用它。因
    为对于使用 @ComponentScan , @EntityScan 或 @SpringBootApplication 注解的Spring Boot应用来说,来自每个jar的类都会被读
    取,这会造成一定的问题。
3.5 定位main应用类
  • 我们通常建议你将main应用类放在位于其他类上面的根包(root package)中。通常使用 @EnableAutoConfiguration 注解你的
    main类,并且暗地里为某些项定义了一个基础“search package”。例如,如果你正在编写一个JPA应用,
    被 @EnableAutoConfiguration 注解的类所在包将被用来搜索 @Entity 项。
    使用根包允许你使用 @ComponentScan 注解而不需要定义一个 basePackage 属性。如果main类位于根包中,你也可以使
    用 @SpringBootApplication 注解
下面是一个典型的结构:
com
+- example
+- myproject
+- Application.java
|
+- domain
| +- Customer.java
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- web
+- CustomerController.java
Application.java 文件将声明 main 方法,还有基本的 @Configurationpackage 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放进一个单独的类。 @Import 注解可以用来导入其他配置类。另外,你也可以使用 @ComponentScan注解自动收集所有的Spring组件,包括 @Configuration 类。
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
3.6 自动配置
  • 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 {
}
3.7 Spring Beans和依赖注入
  • 你可以自由地使用任何标准的Spring框架技术去定义beans和它们注入的依赖。简单起见,我们经常使用 @ComponentScan 注解
    搜索beans,并结合 @Autowired 构造器注入。
  • 如果使用上面建议的结构组织代码(将应用类放到根包下),你可以添加 @ComponentScan 注解而不需要任何参数。你的所有
    应用程序组件( @Component , @Service , @Repository , @Controller 等)将被自动注册为Spring Beans。
下面是一个 @Service Bean的示例,它使用构建器注入获取一个需要的 RiskAssessor bean。
package com.example.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class DatabaseAccountService implements AccountService {
private final RiskAssessor riskAssessor;
@Autowired
public DatabaseAccountService(RiskAssessor riskAssessor) {
this.riskAssessor = riskAssessor;
}
// ...
}
注:注意如何使用构建器注入来允许 riskAssessor 字段被标记为 final ,这意味着 riskAssessor 后续是不能改变的。
3.8 @SpringBootApplication注解的解释
/**
很多Spring Boot开发者总是使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan 注解他们的main类。由于这些
注解被如此频繁地一块使用(特别是你遵循以上最佳实践时),Spring Boot提供一个方便的 @SpringBootApplication 选择。
该 @SpringBootApplication 注解等价于以默认属性使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan 。
*/
package com.test;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;import com.test.controller.SpringbootDemo;
@SpringBootApplication
public class SpringbootApplication {public static void main(String[] args) {SpringApplication.run(SpringbootDemo.class, args);}
}

努力更新中…欢迎点赞+关注!

相关文章:

  • 技术赋能教师专业发展:从理论到实践的深度剖析
  • createInnerAudioContext播放不完整?
  • 榕壹云外卖跑腿系统:基于Spring Boot的开源生活服务平台技术解析
  • STM32 GPIO 寄存器开发
  • OCCT基础类库介绍:Modeling Algorithm - Topological Tools
  • 今天我想清楚了
  • 无需公网IP:Termux+手机+内网穿透实现Minecraft远程多人联机
  • 基于大数据技术的在UGC数据分析与路线推荐的研究
  • ArcGIS中利用泰森多边形法分析站点与流域占比
  • VTK知识学习(54)- 交互与Widget(五)
  • ES 索引加载 vs BulkLoad
  • function ‘as_cholmod_sparse‘ not provided by package ‘Matrix‘
  • FreeCAD创作参数化凹形和水波纹式雨水箅子
  • 意法STM32F103C8T6 单片机ARM Cortex-M3 国民MCU 电机控制到物联网专用
  • Windows系统提示“mfc140u.dll丢失”?详细修复指南,一键恢复程序运行!
  • 智能制造——解读 51页制造业数据治理主数据管理系统建设方案【附全文阅读】
  • 从零Gazebo中实现Cartographer算法建图(新目录)
  • 如何使用 mkimage 工具生成 uImage 文件(RISC-V 环境)
  • 使用 Rust Clippy 的详细方案
  • JS使用~、>>、<<、>>>、|来取整,有啥区别
  • 学校网站建设工作领导小组/制作app软件平台
  • 高明做网站/手机清理优化软件排名
  • 软件开发项目经验/网站优化设计的基础是网站基本要素及每个细节的优化
  • 石家庄做网站的口碑好/太原seo排名公司
  • 手机里编辑 Wordpress/湖南网站建设推广优化
  • 自己做的网站验证码出不来怎么/如何制作网站和网页