zoukankan      html  css  js  c++  java
  • SpringBoot基础

    1.定位main应用类,Spring Boot应用的入口

    我们通常建议将main应用类放在位于其他类上面的根包( root package) 中。 通常使用 @EnableAutoConfiguration 注解
    main类, 并且暗地里为某些项定义了一个基础“search package”。 例如, 如果你正在编写一个JPA应用,被 @EnableAutoConfiguration 注解的类所在包将被用来自动搜索 @Entity 项。会自动加载main应用类所在的包下的注解。
    使用根包允许你使用 @ComponentScan 注解而不需要定义一个 basePackage 属性。 如果main类位于根包中, 你也可以使
    用 @SpringBootApplication 注解。

    下面是一个典型的项目结构:

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

    Application.java 文件将声明 main 方法, 还有基本的 @Configuration 。

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

    2.配置类@configuration

    Spring Boot提倡基于Java的配置。 尽管你可以使用一个XML源来调用 SpringApplication.run() , 我们通常建议你使
    用 @Configuration 类作为主要源。 一般定义 main 方法的类也是主要 @Configuration 的一个很好选择。
    @Configuration主要配置生成Bean的配置类。

    • 导入其他配置类
      你不需要将所有的 @Configuration 放进一个单独的类。 @Import 注解可以用来导入其他配置类。 另外, 你也可以使
      用 @ComponentScan 注解自动收集所有的Spring组件, 包括 @Configuration 类。

    • 导入xml配置
      如果你必须使用基于XML的配置, 建议你仍旧从一个 @Configuration 类开始。 可以使用附加的 @ImportResource 注
      解加载XML配置文件。

    3.自动配置

    Spring Boot自动配置( auto-configuration) 尝试根据你添加的jar依赖自动配置你的Spring应用。 例如, 如果你的classpath下
    存在 HSQLDB , 并且你没有手动配置任何数据库连接beans, 那么我们将自动配置一个内存型( in-memory) 数据库。
    你可以通过将 @EnableAutoConfiguration 或 @SpringBootApplication 注解添加到一个 @Configuration 类上来选择自动配置。
    注:你只需要添加一个 @EnableAutoConfiguration 注解。 建议你将它添加到主 @Configuration 类上。

    • 逐步替换自动配置
      自动配置是非侵占性的, 任何时候你都可以定义自己的配置类来替换自动配置的特定部分。 例如, 如果你添加自己
      的 DataSource bean, 默认的内嵌数据库支持将不会被加载。
      如果需要找出当前应用了哪些自动配置及应用, 你可以使用 --debug 开关启动应用。 这将会记录一个自动配置的报告
      并输出到控制台。

    • 禁用特定的自动配置
      如果发现应用了你不想要的特定自动配置类, 你可以使用 @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 {
    
    }
    

    4.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 后续是不能改变的。

    5.使用@SpringBootApplication注解

    很多Spring Boot开发者总是使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan 注解他们的main类。 遵循最简原则, Spring Boot提供一个方便的 @SpringBootApplication 以供选择。等同于原来的@Configuration、@EnableAutoConfiguration、@ComponentScan三个注解同时使用

    下面是@SpringBootApplication的注解

    package com.example.myproject;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
  • 相关阅读:
    javascript学习一
    对软件工程课程的认识
    人月神话读后感
    项目开发总结报告(GB8567——88)
    MFC双缓冲绘图
    QT连接MySQL
    [QT学习]拷贝文件
    Arduino入门笔记【1】
    《人月神话》读后感以及软件工程总结
    十天冲刺任务(第二次冲刺)
  • 原文地址:https://www.cnblogs.com/sagech/p/5888360.html
Copyright © 2011-2022 走看看