springboot定義bean的幾種實現方式
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; /** *@title democontrolleradvice *
@description controller增強 * * @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相當于對于controller的切面,可以綁定propertyeditor。
(類似于aop,但是底層不是aop實現。)
5.@configuration
@configuration public class democonfig { }
注意:@configuration 主要標識一個bean是一個配置bean,利用這個bean可以對spring進行配置,比如掃描路徑、定義其他的bean。
6.@import
@springbootappilcation @import(demo.class) public class myapplication { public static void main(string[] args) { springapplication.run(myapplication.class); } }
7.beandefinition
這是我們其他所有方法的底層實現。
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; /** *@title demoimportbeandefinationregistar *
@description @import注解的實現類 * * @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); // 注冊bean registry.registerbeandefinition("demoservice", beandefinition); } }
8.
最古老的方式
@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"
- JavaSE中compare、compareTo有什么區(qū)別
- Java中線程安全的實現思路介紹
- mybatis集成到spring的方式有哪些
- Java讀取resources中資源文件路徑以及jar中文件無法讀取如何解決
- java中switch語句的用法介紹
- Mybatis操作多數據源實現的方法
- Springboot自帶線程池怎么實現
- java的預定義Class對象的方法
- 解決Springboot全局異常處理與AOP日志處理中@AfterThrowing失效問題的方法
- Java使用HttpUtils怎么實現發(fā)送HTTP請求
- 關于Spring的統(tǒng)一功能處理(攔截器)實現
- Hadoop?MapReduce實現單詞計數(Word?Count)
- JDBC用IDEA連接SQLServer數據庫的超實用教程
- 詳解SpringBoot可執(zhí)行Jar包運行原理
- 詳解Java中如何定義和訪問靜態(tài)字段和方法
- Java通過Lambda表達式實現簡化代碼
- 使用IDEA反編譯沒有擦除泛型的原因解析
- IDEA創(chuàng)建SpringBoot父子Module項目的實現方法
- springboot獲取項目目錄路徑的方法
- Java中局部變量和成員變量有什么區(qū)別