シェアSpringBoot良いプログラマはコメントを把握する必要があります

序文

春は次のようにいくつかの段階を経験してきました

第一段階: XMLの設定

春1.xの時代、使用して春を目に飛び込んでくるもの開発したXML コンフィギュレーションBeanのプロジェクトの拡大に伴い、我々はする必要があり、XML クラスとコンフィギュレーションファイルの開発にそして頻繁に、異なるコンフィギュレーションファイルに設定ファイルを間の切り替え

フェーズII:コンフィギュレーションノート

春2.xの  で時代、JDK1.5 のアノテーションのサポートを持って、春には、宣言型の提供ビーンが(例えば注釈付き@Component @Service 大幅な構成の量を減らし、)。アプリケーションの基本的な構成(例えば、データベース構成)を使用する主な方法XML 、注釈付きサービス構成

第三段階: Javaの構成

春3.0  に基づいて紹介 するJava  タイプセーフな再構成可能な設定である設定機能、あなたは置き換えることができ 、XMLを私達はちょうどこの時点で、さSpring4.x 春ブーツが使用することをお勧めのJava 設定を。

これらのすべてのXML 構成は、開発中の損失を表しています。 考えるので 春の  機能の設定やソリューションビジネスの問題を切り替えるため、アプリケーションのロジックを記述するための時間を締め出した構成を記述することを考えてする必要があります春ブーツは  、過去にこの現象が発生しました。春ブーツが  ベースの簡素化春のアプリケーション開発を、単に「ラン」シングル、生産レベルを作成することができます春のアプリケーションを。春のブート春は我々が簡単で開始できるように、(デフォルトの設定を提供)プラットフォームとサードパーティのライブラリのセットで箱から出しています。ほとんどの春ブートアプリケーションは、非常に少ない必要と春の設定を。我々は使用することができますSpringBootが作成したJava アプリケーションを、との使用のjava -jarは  それを開始し、または従来使用して戦争の展開を。また、これはあるSpringBoot 、より多くの開発者が使用する主な理由の一つ。ここでは詳細に説明する必要が SpringBoot いくつかの重要な注意事項を:@Configuration @Bean @SpringBootApplication @ComponentScan

 

@  設定@Bean コメント

さんのJava によって設定@Configuration @Beanは、これら2つのノートを達成、から2つのノートSpring3.0は後に持つようになりました。

。1 @Configuration に対応するクラスで、XMLの設定ファイル。

2 @Beanは対応方法、に作用するXML 構成<Beanを>

ケース

@Configuration

パブリッククラスDemoConfigure {

    @豆

    公開ユーザUserBeanの(){

        ユーザのユーザ=新しいユーザー();

        user.setAge(100)。

        user.setName( "ジャック");

        user.setPwd( "123")。

        ユーザーを返します。

    }

}

 

 

次のようにテストは以下のとおりです。

パッケージcom.example.springboot01; 輸入com.example.springboot01.pojo.User。輸入org.junit.Test; 輸入org.junit.runner.RunWith; 輸入org.springframework.beans.factory.annotation.Autowired; 輸入org.springframework.boot.test.context.SpringBootTest; インポートorg.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class)@SpringBootTest パブリッククラスSpringboot01ApplicationTests {   @Autowired   プライベートユーザユーザー;   @Test   公共ボイドcontextLoads(){       System.out.printlnは(ユーザ)。  } }



















 

 

印刷:

ユーザー{NAME = 'ジャック'、PWD = '123'、年齢= 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,二者功能也一致,标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到srping容器中,并且实例名就是方法名。

- @EnableAutoConfiguration的作用启动自动的配置,@EnableAutoConfiguration注解的意思就是Springboot根据你添加的jar包来配置你项目的默认配置,比如根据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 的自动配置可以帮我们节省很多时间,但是有时候如果我们不想在引入依赖包的情况自动配置,则可以通过相关设置取消

@SpringBootApplication(exclude = {JpaRepositoriesAutoConfiguration.class, RedisAutoConfiguration.class})注解内部将不需要自动配置的依赖通过exclude参数指定即可,可以指定多个类

所有自动配置的类全都在: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")

おすすめ

転載: www.cnblogs.com/gcghcxy/p/10974675.html