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. 初识python: 类练习 - 随机数生成

    1.提取指定值之间的指定个数的随机整数. 2.继承生成随机数的类,打印"坐标". 生成随机数类: import random class GetRadndom(object): ' ...

  2. Antd使用timePicker封装时间范围选择器(React hook版)

    antd中提供了是日期范围选择器及datepaicker封装日期范围选择器的示例,但是没有时间选择范围的组件,这里使用两个timePicker组合一个事件范围选择器,通过disabled属性限定时间可 ...

  3. 《挑战程序设计竞赛》1.6.2-POJ的题目Ants

    #include <stdio.h> #define max(a, b) (((a) > (b)) ? (a) : (b)) #define min(a, b) (((a) < ...

  4. T-SQL创建数据库常用方法2020年10月29日20:12:04网课笔记

    2.接口的作用 第一.方便框架的设计.利于团队的开发. 第二.方便项目拓展.高内聚.低耦合. 3.反射 [1]反射的理解:通过读取程序集的信息,找到相关的类型和类型的成员,也可以得到相关的对象.而这种 ...

  5. Vulnhub系列——持续更新

    vulnhub系列--持续更新 一 · XXE Lab: 1 ​ 使用vmware搭建靶机 ​ 扫描存活主机 ​ 找到目标主机--192.168.1.18 ​ 开始扫描目标端口 ​ 发现只开了一个80 ...

  6. java基础04-数据类型扩展及面试题

    java基础04-数据类型扩展及面试题讲解 public class demo02 { public static void main(String[] args){ // 一.整数拓展: 进制 二进 ...

  7. leeetcode 20. 有效的括号

    20. 有效的括号 问题描述 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的 ...

  8. 【JavaWeb】CVE-2016-4437 Shiro反序列化漏洞分析及代码审计

    Shiro反序列化漏洞分析及代码审计 漏洞简介 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.   Apache Shiro默认使用了CookieRe ...

  9. 一段关于java NIO server端接受客户端socket连接;演示了关于channel,selector等组件的整合使用

    public class ReactorDemo { public static void main(String[] args) throws IOException { ServerSocketC ...

  10. Servlet-ServletConfig类使用介绍

    ServletConfig类(Servlet程序的配置信息类) Servlet 程序和 ServletConfig对象都是由 Tomcat负责创建,我们负责使用. Servlet 程序默认是第一次访问 ...