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. Pytest_定制allure报告(12)

    定制报告需要先导入allure模块,再使用以下装饰器方法: feature: 标注主要功能模块. story: 标注feature功能模块下的分支功能. description:在报告中显示用例描述. ...

  2. linux修改默认的SSH远程端口22

    1.编辑sshd_config文件 [root@localhost ~]#  vim /etc/ssh/sshd_config 搜索 #Port 22行,删除开头的 # 字符,然后将其替换为要使用的端 ...

  3. [转]Python3字符串前缀u、b、r

    1.无前缀 & u前缀 字符串默认创建即以Unicode编码存储,可以存储中文. string = 'a'  等效于  string = u'a' Unicode中通常每个字符由2个字节表示 ...

  4. MySQL索引失效之隐式转换

    常见索引失效: 1. 条件索引字段"不干净":函数操作.运算操作 2. 隐式类型转换:字符串转数值:其他类型转换 3. 隐式字符编码转换:按字符编码数据长度大的方向转换,避免数据截 ...

  5. CentOS6.5安装Hive-1.2.2

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6627669615377908231/ Hadoop环境已安装完成<CentOS6.5下安装Hadoop-2. ...

  6. vue2.0多页面开发

    我们平常用vue开发的时候总觉得vue好像就是专门为了单页面应用而诞生的,其实不是.因为vue在工程化开发的时候很依赖webpack,而webpack是将所有的资源整合到一块,弄成一个单页面.但是vu ...

  7. JUC之读写锁问题

    读写锁 读写锁在同一时刻可以允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞.读写锁维护了一对锁,一个读锁和一个写锁,通过分离读锁和写锁,使得并发性相比一般的排他锁有了很大提升 ...

  8. tomcat容器启动失败疑难问题解决方案

    严重: 子容器启动失败java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: 初始化组件[or ...

  9. vue学习7-v-show和v-if

    1. v-show:这个是一次性会把所有的都渲染出来,然后通过简单的切换display值来修改是否需要被渲染.所以在需要频繁切换的情况下推荐使用.v-show不能在template标签上使用. 2. ...

  10. java单例模式(饿汉式和懒汉式)

    1 /* 2 * 设计模式:对问题行之有效的解决方式.其实它是一种思想. 3 * 4 * 1,单例设计模式 5 * 解决的问题:就是可以保证一个类在内容中的对象唯一性. 6 * 7 * 必须对于多个程 ...