国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringBoot中有幾種定義Bean的方式?

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot中有幾種定義Bean的方式?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1.@Bean

@Bean
public DemoService demoService() {
    return new DemoService();
}

2.@Component

@Component
public class DemoService {
}

3.@Controller、@RestController、@Service、@Repository

@RestController
public class DemoController{
    @GetMapping("/test")
    public String test() {
        return "succeed";
    }
}

4.@ControllerAdvice、@RestControllerAdvice

import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;

/**
 * <p> @Title DemoControllerAdvice
 * <p> @Description Controller增強(qiáng)
 *
 * @author ACGkaka
 * @date 2023/4/25 21:07
 */
@ControllerAdvice
public class DemoControllerAdvice implements ResponseBodyAdvice {

    @Override
    public boolean supports(MethodParameter methodParameter, Class aClass) {
        return true;
    }

    @Override
    public Object beforeBodyWrite(Object body, MethodParameter methodParameter, MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
        System.out.println("body is: " + body);
        return body;
    }
}

注意:@ControllerAdvice相當(dāng)于對(duì)于Controller的切面,可以綁定PropertyEditor。

(類(lèi)似于AOP,但是底層不是AOP實(shí)現(xiàn)。)

5.@Configuration

@Configuration
public class DemoConfig {
}

注意:@Configuration 主要標(biāo)識(shí)一個(gè)Bean是一個(gè)配置Bean,利用這個(gè)Bean可以對(duì)Spring進(jìn)行配置,比如掃描路徑、定義其他的Bean。

6.@Import

@SpringBootAppilcation
@Import(Demo.class)
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class);
    }
}

7.BeanDefinition

這是我們其他所有方法的底層實(shí)現(xiàn)。

MyApplication.java

@SpringBootApplication
@Import(DemoImportBeanDefinitionRegistrar.class)
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class);
    }
}

DemoImportBeanDefinitionRegistrar.java

import com.demo.service.DemoService;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanNameGenerator;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;

/**
 * <p> @Title DemoImportBeanDefinationRegistar
 * <p> @Description @Import注解的實(shí)現(xiàn)類(lèi)
 *
 * @author ACGkaka
 * @date 2023/4/25 21:18
 */
public class DemoImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {

    @Override
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry, BeanNameGenerator importBeanNameGenerator) {
        AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition().getBeanDefinition();
        // 定義Bean
        beanDefinition.setBeanClass(DemoService.class);

        // 注冊(cè)Bean
        registry.registerBeanDefinition("demoService", beanDefinition);
    }
}

8.<bean />

最古老的方式

@SpringBootApplication
@ImportResource("classpath:spring.xml")
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class);
    }
}

spring.xml

<?xml version="1.0" encoding="UTF-7"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="demoService" class="com.demo.service.DemoService" />

</beans>

整理完畢,完結(jié)撒花~ ??





參考地址:

1.【最新最全】一周刷完Java面試八股文的變態(tài)方法,https://www.bilibili.com/video/BV1NT411W7NA/文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-432547.html

到了這里,關(guān)于SpringBoot中有幾種定義Bean的方式?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 刪除壓縮包密碼的方式有幾種?

    刪除壓縮包密碼的方式有幾種?

    壓縮包文件,設(shè)置密碼很簡(jiǎn)單,但是刪除壓縮包密碼,大家可能知道的方法不太清楚,今天總結(jié)壓縮包刪除壓縮密碼的方法給大家: 方法一: 最簡(jiǎn)單、最直接的方法就是,輸入壓縮包密碼,將壓縮包文件解壓出來(lái),然后再將文件進(jìn)行壓縮,并且壓縮文件的時(shí)候不再設(shè)置密碼

    2024年02月16日
    瀏覽(23)
  • 網(wǎng)絡(luò)安全攻擊方式有幾種?常見(jiàn)類(lèi)型介紹!

    網(wǎng)絡(luò)安全攻擊方式有幾種?常見(jiàn)類(lèi)型介紹!

    滲透測(cè)試是為了證明網(wǎng)絡(luò)防御按照預(yù)期計(jì)劃正常運(yùn)行而提供的一種機(jī)制。作為網(wǎng)絡(luò)安全防范的一種新技術(shù),滲透測(cè)試對(duì)于網(wǎng)絡(luò)安全組織具有實(shí)際應(yīng)用價(jià)值,那么你知道滲透測(cè)試的攻擊方法有哪些嗎?以下為大家詳細(xì)介紹一下,希望對(duì)你們有所幫助。 目前國(guó)內(nèi)外使用比較普遍的

    2024年02月11日
    瀏覽(47)
  • 【面試題】如何實(shí)現(xiàn)數(shù)組去重的?有幾種方式?

    【面試題】如何實(shí)現(xiàn)數(shù)組去重的?有幾種方式?

    ?前端面試題庫(kù) ( 面試必備) ?? ? ? ? ? ? 推薦:★★★★★ 地址:前端面試題庫(kù) 【國(guó)慶頭像】- 國(guó)慶愛(ài)國(guó) 程序員頭像!總有一款適合你! 通過(guò)兩層循環(huán)對(duì)數(shù)組元素進(jìn)行逐一比較,然后通過(guò)splice方法來(lái)刪除重復(fù)的元素。此 方法對(duì)NaN是無(wú)法進(jìn)行去重的 ,因?yàn)檫M(jìn)行比較時(shí)

    2024年02月10日
    瀏覽(24)
  • 手機(jī)怎么登錄企業(yè)郵箱?手機(jī)登錄郵箱有幾種方式?

    手機(jī)怎么登錄企業(yè)郵箱?手機(jī)登錄郵箱有幾種方式?

    一、手機(jī)怎么登錄企業(yè)郵箱?手機(jī)登錄企業(yè)郵箱有幾種方式 1.可以通過(guò)手機(jī)瀏覽器登錄企業(yè)郵箱,方便快捷無(wú)需下載軟件。 2.手機(jī)自帶的郵件軟件,通過(guò)POP3的協(xié)議就能夠收發(fā) 3.第三方的APP,Zoho Mail的郵箱APP,騰訊的QQ郵箱都屬于這一類(lèi)的,但操作上就屬于客戶端的類(lèi)型和原郵

    2024年02月03日
    瀏覽(23)
  • 【Spring】基于注解方式存取JavaBean:Spring有幾種注入方式?有什么區(qū)別?

    【Spring】基于注解方式存取JavaBean:Spring有幾種注入方式?有什么區(qū)別?

    ?Hello,我是小黃。眾所周知,Spring是一個(gè)開(kāi)源的Java應(yīng)用程序框架,其中包括許多通過(guò)注解實(shí)現(xiàn)依賴(lài)注入的功能。Spring提供了多種注入方式,可以滿足不同的需求和場(chǎng)景。常見(jiàn)的注入方式包括構(gòu)造函數(shù)注入、Setter方法注入和屬性注入。不同的注入方式有不同的適用場(chǎng)景和優(yōu)缺

    2024年02月11日
    瀏覽(19)
  • Git 命令行教程及實(shí)例教程,Service有幾種啟動(dòng)方式

    Git 命令行教程及實(shí)例教程,Service有幾種啟動(dòng)方式

    切換回主分支: git checkout master 切換回分支: git checkout git checkout feature_x 再把新建的分支刪掉: git branch -d feature_x 除非你將分支推送到遠(yuǎn)端倉(cāng)庫(kù),不然該分支就是 不為他人所見(jiàn)的: git push origin git push origin feature_x 更新與合并 要更新你的本地倉(cāng)庫(kù)至最新改動(dòng),執(zhí)行: git pu

    2024年04月17日
    瀏覽(24)
  • mysql 刪除表中數(shù)據(jù)的方式有幾種?各有什么優(yōu)劣?

    在MySQL中,刪除表中數(shù)據(jù)的方式有多種。下面是一些常用的方式以及它們的優(yōu)劣勢(shì): 使用DELETE語(yǔ)句: 優(yōu)勢(shì):DELETE語(yǔ)句是最常見(jiàn)和簡(jiǎn)單的刪除數(shù)據(jù)方式。它可以刪除表中的所有數(shù)據(jù)或者根據(jù)WHERE子句刪除指定條件的數(shù)據(jù)。 劣勢(shì):DELETE語(yǔ)句執(zhí)行時(shí),會(huì)將數(shù)據(jù)逐行刪除,對(duì)于大表或

    2024年02月16日
    瀏覽(18)
  • Vue中的的通信方式有幾種?隔代組件的通信你用那種方式解決?

    props/$emit 適用父子組件通信 ref與parent/children 適用父子組件通信 attrs/listeners,provide/inject 適用于隔代組件通信 vuex,EventBus (事件總線) 適用于父子、隔代、兄弟組件通信 slot 插槽方式 attrs實(shí)例 父組件(這時(shí)候我們傳了兩個(gè)參數(shù)title和type) 子組件(注意:子組件使用了title,那么

    2024年02月14日
    瀏覽(26)
  • ip-guard控制臺(tái)遠(yuǎn)程控制客戶端的授權(quán)方式有幾種?

    遠(yuǎn)程控制是通過(guò)控制臺(tái)遠(yuǎn)程操作客戶端機(jī)器,為網(wǎng)絡(luò)管理提供方便,幫助管理員遠(yuǎn)程查看機(jī)器故障,快速解決系統(tǒng)問(wèn)題。 共有三種遠(yuǎn)程控制客戶端的授權(quán)方式: 1、用戶授權(quán) 選定目標(biāo)計(jì)算機(jī),選擇菜單“維護(hù)-遠(yuǎn)程控制”,控制臺(tái)會(huì)彈出確定請(qǐng)求遠(yuǎn)程用戶授權(quán)的提示框,點(diǎn)擊

    2024年02月02日
    瀏覽(24)
  • 17、YML配置文件及讓springboot啟動(dòng)時(shí)加載我們自定義的yml配置文件的幾種方式

    17、YML配置文件及讓springboot啟動(dòng)時(shí)加載我們自定義的yml配置文件的幾種方式

    其實(shí)本質(zhì)和.properties文件的是一樣的。 Spring Boot默認(rèn)使用SnakeYml工具來(lái)處理YAML配置文件,SnakeYml工具默認(rèn)就會(huì)被spring-boot-starter導(dǎo)入,因此無(wú)需開(kāi)發(fā)者做任何額外配置。 YAML本質(zhì)是JSON的超級(jí),它在表示結(jié)構(gòu)化文檔時(shí)更有表現(xiàn)力。 ▲ properties文件使用 .分隔符 作為結(jié)構(gòu)化的表現(xiàn):

    2024年02月14日
    瀏覽(29)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包