国产另类ts人妖一区二区_欧美肥老太做爰视频_快穿高h肉_国产欧美综合在线

當(dāng)前位置: 首頁(yè) / 技術(shù)干貨 / 正文
好程序員Java培訓(xùn)分享SpringBoot -啟動(dòng)流程

2020-07-31

Java培訓(xùn)

  好程序員Java培訓(xùn)分享SpringBoot -啟動(dòng)流程一、主程序入口類

好程序員

  Application.class

  @SpringBootApplication

  public class SpringbootExampleApplication {

  public static void main(String[] args) {

  SpringApplication.run(SpringbootExampleApplication.class, args);

  }

  }

  特點(diǎn)

  該類使用了@SpringBootApplication修飾

  SpringApplication.run方法XxxApplication.class作為參數(shù)傳入

  注意: 必須是一個(gè)使用@SpringBootApplication注解類 當(dāng)你注釋掉該類的時(shí)候直接報(bào)錯(cuò)

  二、@SpringBootApplication注解

  概要

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

  等價(jià)于

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

  源碼

  @Target(ElementType.TYPE)

  @Retention(RetentionPolicy.RUNTIME)

  @Inherited

  // 配置注解

  @SpringBootConfiguration

  // 開(kāi)啟自動(dòng)注解

  @EnableAutoConfiguration

  // 類似于spring中的自動(dòng)掃描包

  @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 {};

  }

  說(shuō)明

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

  @ComponentScan注解,同時(shí)是@ComponentScan注解的容器。我們發(fā)現(xiàn)scanBasePackages和scanBasePackageClasses兩個(gè)注解屬性上面同樣聲明了@AliasFor注解,分別指向了@ComponentScan注解的basePackages注解屬性和basePackageClasses屬性。

  聲明了@EnableAutoConfiguration注解,表明聲明了它的類本身會(huì)默認(rèn)開(kāi)啟自動(dòng)配置

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

  三、@Configuration

  說(shuō)明

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

  配置方式的區(qū)別

  表達(dá)形式

  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{

  }

  注冊(cè)Bean

  xml形式注冊(cè)

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

  JavaConfig方式

  @Configuration

  public class DruidConfiguration{

  public DataSource druidDataSource() {

  return new DruidDataSource();

  }

  }

  依賴注入

  xml形式注冊(cè)

  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;

  }

  }

  總結(jié)

  @Configuration一定要配合@Bean。用來(lái)替換xml配置文件

  @Bean注解告訴Spring,帶有@Bean的注解方法將返回一個(gè)對(duì)象

  四、@ComponentScan

  作用

  @ComponentScan對(duì)應(yīng)XML配置中的元素@ComponentScan的功能其實(shí)就是自動(dòng)掃描并加載符合條件的組件

  我們可以通過(guò)basePackages等屬性來(lái)細(xì)粒度的定制@ComponentScan自動(dòng)掃描的范圍,如果不指定,則默認(rèn)Spring框架實(shí)現(xiàn)會(huì)從聲明@ComponentScan所在類的package進(jìn)行掃描

好程序員公眾號(hào)

  • · 剖析行業(yè)發(fā)展趨勢(shì)
  • · 匯聚企業(yè)項(xiàng)目源碼

好程序員開(kāi)班動(dòng)態(tài)

More+
IT培訓(xùn)IT培訓(xùn)
在線咨詢
IT培訓(xùn)IT培訓(xùn)
試聽(tīng)
IT培訓(xùn)IT培訓(xùn)
入學(xué)教程
IT培訓(xùn)IT培訓(xùn)
立即報(bào)名
IT培訓(xùn)

Copyright 2011-2023 北京千鋒互聯(lián)科技有限公司 .All Right 京ICP備12003911號(hào)-5 京公網(wǎng)安備 11010802035720號(hào)