zoukankan      html  css  js  c++  java
  • SpringBoot学习第一天

    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);
        }
    
    }
  • 相关阅读:
    SharePoint缓存配置
    修改默认的个人站点
    生成代码工具
    Ext 布局(layout)
    编程网站
    EXT 4.0 上传文件
    修改Ext grid 单元格
    Ext.tip.Tooltip 提示
    EXT iframe 应用
    EXT 4.0 TreeGrid 使用
  • 原文地址:https://www.cnblogs.com/minjay/p/5718874.html
Copyright © 2011-2022 走看看