隔着超薄肉丝进入小说_男女刺激性视频大片_女教师的诱波多野结衣_一级欧美过瘾大片

當前位置: 首頁 / 技術干貨 / 正文
好程序員Java培訓分享SpringBoot -啟動流程

2020-07-31

Java培訓

  好程序員Java培訓分享SpringBoot -啟動流程一、主程序入口類

好程序員

  Application.class

  @SpringBootApplication

  public class SpringbootExampleApplication {

  public static void main(String[] args) {

  SpringApplication.run(SpringbootExampleApplication.class, args);

  }

  }

  特點

  該類使用了@SpringBootApplication修飾

  SpringApplication.run方法XxxApplication.class作為參數傳入

  注意: 必須是一個使用@SpringBootApplication注解類 當你注釋掉該類的時候直接報錯

  二、@SpringBootApplication注解

  概要

  @SpringBootApplication注解是Spring Boot的核心注解,它是一個組合注解,它的主要作用是標注在某個類上,表示這是一個Spring Boot的配置類

  等價于

  @SpringBootApplication = (默認屬性)@Configuration + @EnableAutoConfiguration + @ComponentScan。

  源碼

  @Target(ElementType.TYPE)

  @Retention(RetentionPolicy.RUNTIME)

  @Inherited

  // 配置注解

  @SpringBootConfiguration

  // 開啟自動注解

  @EnableAutoConfiguration

  // 類似于spring中的自動掃描包

  @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),

  @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })

  public @interface SpringBootApplication {

  @AliasFor(annotation = EnableAutoConfiguration.class)

  Class[] exclude() default {};

  @AliasFor(annotation = EnableAutoConfiguration.class)

  String[] excludeName() default {};

  @AliasFor(annotation = ComponentScan.class, attribute = "basePackages")

  String[] scanBasePackages() default {};

  @AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses")

  Class[] scanBasePackageClasses() default {};

  }

  說明

  本身就是注解,提供了exclude()和excludeName()兩個注解屬性

  @ComponentScan注解,同時是@ComponentScan注解的容器。我們發現scanBasePackages和scanBasePackageClasses兩個注解屬性上面同樣聲明了@AliasFor注解,分別指向了@ComponentScan注解的basePackages注解屬性和basePackageClasses屬性。

  聲明了@EnableAutoConfiguration注解,表明聲明了它的類本身會默認開啟自動配置

  聲明了@Configuration注解,表明聲明了它的類本身也是個配置類。

  三、@Configuration

  說明

  SpringBoot社區推薦使用基于JavaConfig的配置形式 ,@Configuration表示一個IoC容器的配置類

  配置方式的區別

  表達形式

  xml方式

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://www.springframework.org/schema/beans

  http://www.springframework.org/schema/beans/spring-beans.xsd">

  JavaConfig方式

  @Configuration

  public class DruidConfiguration{

  }

  注冊Bean

  xml形式注冊

  class="com.alibaba.druid.pool.DruidDataSource" />

  JavaConfig方式

  @Configuration

  public class DruidConfiguration{

  public DataSource druidDataSource() {

  return new DruidDataSource();

  }

  }

  依賴注入

  xml形式注冊

  class="org.apache.shiro.web.mgt.DefaultWebSecurityManager" />

  JavaConfig方式

  @Configuration

  public class ShiroConfiguration {

  @Bean

  public SecurityManager securityManager() {

  DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();

  securityManager.setCacheManager(cacheManager);

  return securityManager;

  }

  @Bean

  public RedisCacheManager cacheManager(CustomRedisManager redisManager) {

  RedisCacheManager redisCacheManager = new RedisCacheManager();

  redisCacheManager.setRedisManager(redisManager);

  return redisCacheManager;

  }

  }

  總結

  @Configuration一定要配合@Bean。用來替換xml配置文件

  @Bean注解告訴Spring,帶有@Bean的注解方法將返回一個對象

  四、@ComponentScan

  作用

  @ComponentScan對應XML配置中的元素@ComponentScan的功能其實就是自動掃描并加載符合條件的組件

  我們可以通過basePackages等屬性來細粒度的定制@ComponentScan自動掃描的范圍,如果不指定,則默認Spring框架實現會從聲明@ComponentScan所在類的package進行掃描

好程序員公眾號

  • · 剖析行業發展趨勢
  • · 匯聚企業項目源碼

好程序員開班動態

More+
  • HTML5大前端 <高端班>

    開班時間:2021-04-12(深圳)

    開班盛況

    開班時間:2021-05-17(北京)

    開班盛況
  • 大數據+人工智能 <高端班>

    開班時間:2021-03-22(杭州)

    開班盛況

    開班時間:2021-04-26(北京)

    開班盛況
  • JavaEE分布式開發 <高端班>

    開班時間:2021-05-10(北京)

    開班盛況

    開班時間:2021-02-22(北京)

    開班盛況
  • Python人工智能+數據分析 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2020-09-21(上海)

    開班盛況
  • 云計算開發 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2019-07-22(北京)

    開班盛況
IT培訓IT培訓
在線咨詢
IT培訓IT培訓
試聽
IT培訓IT培訓
入學教程
IT培訓IT培訓
立即報名
IT培訓

Copyright 2011-2023 北京千鋒互聯科技有限公司 .All Right 京ICP備12003911號-5 京公網安備 11010802035720號