博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot学习第一天
阅读量:5043 次
发布时间:2019-06-12

本文共 3524 字,大约阅读时间需要 11 分钟。

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@ComponentScanpublic 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;@Servicepublic 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 @ComponentScanpublic class Application {    public static void main(String[] args) {        SpringApplication.run(Application.class, args);    }}

 

转载于:https://www.cnblogs.com/minjay/p/5718874.html

你可能感兴趣的文章