日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

好程序员分享SpringBoot须掌握的注解

發布時間:2025/4/16 javascript 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 好程序员分享SpringBoot须掌握的注解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

Spring經歷了如下幾個階段

第一階段:xml配置

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

第二階段:注解配置

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

第三階段:java配置

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

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

?

@?Configuration@Bean注解

SpringJava配置方式是通過 @Configuration@Bean 這兩個注解實現的,這兩個注解是從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);
? }
?
}

?

?

打印:

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,二者功能也一致,標注當前類是配置類,并會將當前類內聲明的一個或多個以@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")

轉載于:https://www.cnblogs.com/gcghcxy/p/10974675.html

總結

以上是生活随笔為你收集整理的好程序员分享SpringBoot须掌握的注解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。