1 引用starter包可以很方面的引入一组你需要的依赖,而不需要逐个去添加依赖到项目中,也就是一站式获取,比如你想写一个有关spring 和jpa相关的项目,仅仅只需要添加一个spring-boot-starter-data-jpa依赖就可以了,你就会发现自己的项目中spring基本的那些jar和jpa的jar就已经在你的项目中了,如下图

2 如果你的一个类没有包的描述,那么你的类包会默认是“default package”,用“default package”是不提倡的,应该避免,因为当你使用@ComponentScan, @EntityScan 或者 @SpringBootApplication的情况下会出现一些特别的问题

3 一般要求你的main class,在你的根目录下,如下的Application.java,

com
+- example
+- myproject
+- Application.java
|
+- domain
| +- Customer.java
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- web
+- CustomerController.java

而且@EnableAutoConfiguration注解一般也位于main class上,它隐含的定义了“search package”在某些项目中,比如,你写了一个jpa的项目,被@EnableAutoConfiguration注解的类会去寻找被@Entity注解的类。如果你在main class中注解了@ComponentScan,则可以不需要指定其中的属性basePackage

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);
} }

4 springboot是支持基于java配置的,我们一般提倡你在主要的类上加上@Configuration注解,说明当前类是一个配置类,@ComponentScan会扫到这个类,并将配置到项目中。如果你确实很喜欢,习惯了基于XML配置的方法,那么你可以继续写一个类,并在该类上注解@Configuration,然后加上@ImportResource注解,它可以指定一个或多个定义bean的xml文件

@Configuration
@ImportResource("classpath: xx.xml")
public class Example { }

5 springboot的 auto-configuration会尝试去自动配置一些属性,这些属性主要是看你在项目中添加了哪些依赖,如果HSQLDB在你的classpath下,那么你不需要手动的去配置数据库连接的beans,当然你需要在你的@Configuration类上加上@EnableAutoConfiguration (该注解一般建议你写在主要的配置类上)或者@SpringBootApplication注解,其实你要看springboot到底为你配置了哪些属性,可以查看spring-boot-autoconfigure jar包下的源码。

6 springboot的auto-configuration是非侵入式的,你可以自己手动写代码配置,这样springboot的自动配置就会失效。如果你想有些特定的模块的自动配置你不需要,那么你可以用exclude属性将他禁用,如下

import org.springframework.boot.autoconfigure.*;
import org.springframework.boot.autoconfigure.jdbc.*;
import org.springframework.context.annotation.*; @Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
}

这样DataSourceAutoConfiguration中的配置就都禁用了,如果你的类不在classpath下,那么你也可以用excludeName,值为你的配置类的完全限定名。

7 如果你使用Spring Framework的所以技能,简单起见,你可以使用@ComponentScan去找到你定义的所以bean,配合在构造函数上使用@Autowired,将会非常好。如果你按照上面所讲的那样,当你加上不带任何参数的@ComponentScan时,你项目中的所有组件,包括@Component, @Service, @Repository, @Controller等等将会自动注册为spring的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;
} // ... }

8 前面也见过@SpringBootApplication 注解,其实这是springboot的人性化设计啊,一般在项目中的main class中都会用到@Configuration, @EnableAutoConfiguration 和 @ComponentScan注解,既然这样,springboot索性把它们三合一,用一个@SpringBootApplication就完事

package com.example.myproject;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication // 相当于 @Configuration @EnableAutoConfiguration @ComponentScan
public class Application { public static void main(String[] args) {
SpringApplication.run(Application.class, args);
} }

SpringBoot学习第一天的更多相关文章

  1. SpringBoot学习-第一章

    1.SpringBoot入门 开发环境:JDK1.8 开发工具:IDEA2017.3.1 1.简介: Spring Boot让我们的Spring应用变的更轻量化.比如:你可以仅仅依靠一个Java类来运 ...

  2. springboot学习第一步

    关于springboot的介绍就不多说了,可以去百度. 默认的情况下,springboot1.4.0版本要求Java7以上和spring4.3.2以上,当然你也可以使用java1.6,只不过你需要额外 ...

  3. springboot学习(一)——helloworld

    以下内容,如有问题,烦请指出,谢谢 springboot出来也很久了,以前零散地学习了不少,不过很长时间了都没有在实际中使用过了,忘了不少,因此要最近准备抽时间系统的学习积累下springboot,给 ...

  4. 从.Net到Java学习第一篇——开篇

    以前我常说,公司用什么技术我就学什么.可是对于java,我曾经一度以为“学java是不可能的,这辈子不可能学java的.”结果,一遇到公司转java,我就不得不跑路了,于是乎,回头一看N家公司交过社保 ...

  5. Springboot学习03-SpringMVC自动配置

    Springboot学习03-SpringMVC自动配置 前言 在SpringBoot官网对于SpringMVCde 自动配置介绍 1-原文介绍如下: Spring MVC Auto-configur ...

  6. about SpringBoot学习后记

    <SpringBoot实战>第一章节入门的名称为Spring风云再起 看起来Spring的功能确实受Java开发者喜爱 在SpringBoot中,继续将Spring框架做了另一次的封装使框 ...

  7. SpringBoot学习笔记(3):静态资源处理

    SpringBoot学习笔记(3):静态资源处理 在web开发中,静态资源的访问是必不可少的,如:Html.图片.js.css 等资源的访问. Spring Boot 对静态资源访问提供了很好的支持, ...

  8. SpringBoot学习笔记(2):引入Spring Security

    SpringBoot学习笔记(2):用Spring Security来保护你的应用 快速开始 本指南将引导您完成使用受Spring Security保护的资源创建简单Web应用程序的过程. 参考资料: ...

  9. SpringBoot学习系列之一(反射)

    最近在学习SpringBoot的知识,动起手来学习的时候才发现SpringBoot项目采用了大量的反射机制,晕,作为一个应届毕业生,以前学习反射的时候给我的感觉就是,这个到底用来干嘛的,好像没啥用啊, ...

随机推荐

  1. (onlyoffice)在CentOS及其衍生产品上安装Linux的Document Server

    介绍 Document Server是一个在线办公套件,包括用于文本,电子表格和演示文稿的查看器和编辑器,与Office Open XML格式完全兼容:.docx,.xlsx,.pptx,并支持实时协 ...

  2. ubuntu 升级node和npm 版本

    使用vue-cli 3 构建项目时会一直卡在拉取依赖不动,原因是node和npm版本过低,升级node版本即可 $ sudo npm cache clean -f $ sudo npm install ...

  3. 从如何使用到如何实现一个Promise

    前言 这篇文章我们一起来学习如何使用Promise,以及如何实现一个自己的Promise,讲解非常清楚,全程一步一步往后实现,附带详细注释与原理讲解. 如果你觉的这篇文章有帮助到你,️关注+点赞️鼓励 ...

  4. [源码解析] PyTorch 分布式之 ZeroRedundancyOptimizer

    [源码解析] PyTorch 分布式之 ZeroRedundancyOptimizer 目录 [源码解析] PyTorch 分布式之 ZeroRedundancyOptimizer 0x00 摘要 0 ...

  5. 纯手画WinForm的Alert提示弹出框

    纯手画WinForm的Alert弹框 一.窗体设置 设置以下属性: 属性名 属性值 说明 AutoScaleMode None 确定屏幕分辨率或字体更改时窗体如何缩放 BackColor 103, 1 ...

  6. PWA 技术落地!让你的站点(Web)秒变APP(应用程序)

    Web应用方兴未艾,我们已经十分习惯习惯了在电脑上进行以自己的工作,而随着众多功能强大的在线网站,我们的Windows的桌面也不再拥挤着各种快捷方式:不光是PC端,在移动端我们也不再在浩如烟海的应用市 ...

  7. echarts的通用属性的介绍

    通常做数据可视化时,会用到统计图,这里我使用的是Echarts,对于第一次用的人来说,还是有点难度的,主要是里面的属性太多,看的头痛,这里我自己做个笔记 这里的配置项手册里面就是查找各种属性了,在Ec ...

  8. golang中的goroutine

    1. 概念 go中可以并发执行的活动单元称为goroutine当一个go程序启动时,一个执行main function的goroutine会被创建,称为main goroutinego func() ...

  9. 多线程-守护线程-setDaemon

    1 package multithread4; 2 /* 3 * 停止线程: 4 * 1,stop方法. 5 * 6 * 2,run方法结束. 7 * 8 * 怎么控制线程的任务结束呢? 9 * 任务 ...

  10. IEEE754浮点数表示法

    IEEE二进制浮点数算术标准(ANSI/IEEE Std 754-1985)是一套规定如何用二进制表示浮点数的标准.就像"补码规则"建立了二进制位和正负数的一一对应关系一样,IEE ...