久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

SpringBoot須掌握的幾個注解

 好程序員IT 2019-06-04

前言

Spring經(jīng)歷了如下幾個階段

第一階段:xml配置

Spring 1.x時代,,使用Spring開發(fā)滿眼都是xml配置的Bean,隨著項目的擴大,,我們需要把xml配置文件放到不同的配置文件里,,那時需要頻繁的在開發(fā)的類和配置文件之間進行切換

第二階段:注解配置

Spring 2.x 時代,隨著JDK1.5帶來的注解支持,,Spring提供了聲明Bean的注解(例如@Component,、@Service),大大減少了配置量,。主要使用的方式是應用的基本配置(如數(shù)據(jù)庫配置)用xml,業(yè)務配置用注解

第三階段:java配置

Spring 3.0 引入了基于 Java 的配置能力,,這是一種類型安全的可重構配置方式,,可以代替 XML。我們目前剛好處于這個時代,,Spring4.xSpring Boot都推薦使用Java配置,。

所有這些xml配置都代表了開發(fā)時的損耗。 因為在思考 Spring 特性配置和解決業(yè)務問題之間需要進行思維切換,,所以寫配置擠占了寫應用程序邏輯的時間,。Spring Boot 讓這一切成為了過去。Spring Boot 簡化了基于Spring的應用開發(fā),,只需要“run”就能創(chuàng)建一個獨立的,、生產(chǎn)級別的Spring應用。Spring BootSpring平臺及第三方庫提供開箱即用的設置(提供默認設置),,這樣我們就可以簡單的開始,。多數(shù)Spring Boot應用只需要很少的Spring配置。我們可以使用SpringBoot創(chuàng)建java應用,,并使用java –jar 啟動它,,或者采用傳統(tǒng)的war部署方式。這也是SpringBoot越來越多的開發(fā)人員使用的主要原因之一,。下面我們就來詳細講解SpringBoot幾個很重要的注解:@Configuration ,, @Bean@SpringBootApplication,,@ComponentScan

@ Configuration@Bean注解

SpringJava配置方式是通過 @Configuration和 @Bean 這兩個注解實現(xiàn)的,,這兩個注解是從Spring3.0之后就開始有了:

1,、@Configuration 作用于類上,相當于一個xml配置文件,;

2,、@Bean 作用于方法上,相當于xml配置中的<bean>,;

案例

@Configuration

public class DemoConfigure {

    @Bean

    public User userBean(){

        User user=new User();

        user.setAge(100);

        user.setName("jack");

        user.setPwd("123");

        return user;

    }

}

測試如下:

package com.example.springboot01;

import com.example.springboot01.pojo.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class Springboot01ApplicationTests {

  @Autowired
  private User user;
  @Test
  public void contextLoads() {
      System.out.println(user);
  }

}

打?。?/span>

User{name='jack', pwd='123', age=100}

@SpringBootApplication

@SpringBootApplication注解源碼如下:

    package org.springframework.boot.autoconfigure;

    @Target(ElementType.TYPE)

    @Retention(RetentionPolicy.RUNTIME)

    @Documented

    @Inherited

    @SpringBootConfiguration

    @EnableAutoConfiguration

    @ComponentScan(excludeFilters = {

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

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

    public @interface SpringBootApplication {

    }

@SpringBootApplication是一個復合注解,包括@ComponentScan,,和@SpringBootConfiguration,,@EnableAutoConfiguration

- @SpringBootConfiguration繼承自@Configuration,,二者功能也一致,,標注當前類是配置類,并會將當前類內(nèi)聲明的一個或多個以@Bean注解標記的方法的實例納入到srping容器中,,并且實例名就是方法名,。

- @EnableAutoConfiguration的作用啟動自動的配置,@EnableAutoConfiguration注解的意思就是Springboot根據(jù)你添加的jar包來配置你項目的默認配置,,比如根據(jù)spring-boot-starter-web ,,來判斷你的項目是否需要添加了webmvctomcat,就會自動的幫你配置web項目中所需要的默認配置,。

- @ComponentScan,,掃描當前包及其子包下被@Component@Controller,,@Service,,@Repository注解標記的類并納入到spring容器中進行管理。是以前的<context:component-scan>(以前使用在xml中使用的標簽,,用來掃描包),。

@SpringBootApplication指定掃描某些包

@SpringBootApplication注解默認掃描的是當前類所在的包和子包。自己可以通過屬性來設置掃描其他的包,,設置了之后默認值就不在有用,。

@SpringBootApplication(scanBasePackageClasses = {TestConfig.class,TestController.class})
通過設置scanBasePackageClasses屬性來制定,只掃描哪些配置類(@Configuration注解的類),。

或者如下設置:

@SpringBootApplication(scanBasePackageClasses = {Springboot01Application.class,TestConfig.class})
指定掃描這些類所在的包和子包,。

設置不自動裝配

springboot 的自動配置可以幫我們節(jié)省很多時間,但是有時候如果我們不想在引入依賴包的情況自動配置,則可以通過相關設置取消

@SpringBootApplication(exclude = {JpaRepositoriesAutoConfiguration.classRedisAutoConfiguration.class})注解內(nèi)部將不需要自動配置的依賴通過exclude參數(shù)指定即可,可以指定多個類

所有自動配置的類全都在:org.springframework.boot.autoconfigure包下。只能排出自動配置的類,。

@ComponentScan

@ComponentScan注解在Spring的注解中也起到到相當重要的作用,,它可以自定義Spring掃描的包,也就是它默認會掃描標注了@Controller,、@Service,、@Component以及@Repository注解的類,,并實例化這些組件到SpringIOC容器中,它有個配置屬性:basePackages,,也就是指定掃描的包,,如果不知道,它會默認掃描配置了該注解的類的包所在的路徑(包括子包),。我們看@SpringBootConfiguration注解的源碼中有段代碼:

@AliasFor(

 annotation = ComponentScan.class,

 attribute = "basePackages"

)

String[] scanBasePackages() default {};

scanBasePackages屬性,,指定到了@ComponentScan注解的basePackages屬性,所有在SpringBoot中,,我們同樣可以通過scanBasePackages屬性指定包掃描的路徑(如不指定,,會默認掃描主程序類所在的包路徑以及子包下的類):

@SpringBootApplication(scanBasePackages = "com.seagetech.springbootdemo")

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多