Netty-Rest搭建筆記

0.相關知識

@Component、@Repository、@Service


@Repository
//@Scope設置bean的作用范圍
@Scope("singleton")//單例  prototype每次創建都會給一個新實例。
public class BookDaoImpl implements BookDao {
//生命周期public void save() {System.out.println("book dao save ...");}//@PostConstruct設置bean的初始化方法@PostConstruct//在構造方法之前public void init() {System.out.println("init ...");}//@PreDestroy設置bean的銷毀方法@PreDestroy//銷毀之前public void destroy() {System.out.println("destroy ...");}}

Autowired使用暴力反射,無需Setter方法了。

Config類


@Configuration//一般只寫一個 ,其他的用Import
@ComponentScan("com.itheima")
//@Import:導入其他config類的配置信息
@Import({JdbcConfig.class})
//@PropertySource加載properties配置文件
@PropertySource({"jdbc.properties"})
public class SpringConfig {
}

@Service
public class BookServiceImpl implements BookService {//@Autowired:注入引用類型,自動裝配模式,默認按類型裝配@Autowired//@Qualifier:自動裝配bean時按bean名稱裝配@Qualifier("bookDao")private BookDao bookDao;public void save() {System.out.println("book service save ...");bookDao.save();}
}

1.整合tinylog?

1.新建tinylog.properties

writer       = console
writer.file  = log.txt
writer.level = info

2.使用

Logger.tag("SYSTEM").info("Hello World!"); // Output
Logger.info("Hello World!");               // Ignored

2.整合Mybatis、druid、Spring框架

        <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><!-- 數據庫驅動(以MySQL為例) --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.25</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.0</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.10.RELEASE</version></dependency>

1.新建jdbc.properties文件,配置mysql連接配置(需要使用@PropertySource掃描)

2.新建配置類SpringConfig、JdbcConfig、MybatisConfig

package org.leo.web.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;@Configuration
@ComponentScan("org.leo.web")
//@PropertySource:加載類路徑jdbc.properties文件
@PropertySource("classpath:jdbc.properties")
@Import({JdbcConfig.class,MybatisConfig.class})
public class SpringConfig {
}
package org.leo.web.config;import com.alibaba.druid.pool.DruidDataSource;import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;import javax.sql.DataSource;public class JdbcConfig {@Value("${jdbc.driver}")//使用@Value注入private String driver;@Value("${jdbc.url}")private String url;@Value("${jdbc.username}")private String userName;@Value("${jdbc.password}")private String password;@Bean//告訴Spring容器,管理這個對象public DataSource dataSource(){DruidDataSource ds = new DruidDataSource();ds.setDriverClassName(driver);ds.setUrl(url);ds.setUsername(userName);ds.setPassword(password);return ds;}
}
package org.leo.web.config;import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;import javax.sql.DataSource;public class MybatisConfig {//定義bean,SqlSessionFactoryBean,用于產生SqlSessionFactory對象@Beanpublic SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();ssfb.setTypeAliasesPackage("com.itheima.domain");ssfb.setDataSource(dataSource);return ssfb;}//定義bean,返回MapperScannerConfigurer對象@Beanpublic MapperScannerConfigurer mapperScannerConfigurer(){MapperScannerConfigurer msc = new MapperScannerConfigurer();msc.setBasePackage("com.itheima.dao");return msc;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/918350.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/918350.shtml
英文地址,請注明出處:http://en.pswp.cn/news/918350.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

工作筆記-----lwip網絡任務初始化問題排查

工作筆記-----基于FreeRTOS的lwIP網絡任務初始化問題排查 Author&#xff1a;明月清了個風Date&#xff1a; 2025/8/10PS&#xff1a;新項目中在STMF7開發板上基于freeRTOS和lwIP開發網口相關任務&#xff0c;開發過程中遇到了網口無法連接的問題&#xff0c;進行了一系列的排查…

Kotlin動態代理池+無頭瀏覽器協程化實戰

我看到了很多作者展示了Kotlin在爬蟲領域的各種高級用法。我需要從中提取出最"牛叉"的操作&#xff0c;也就是那些充分利用Kotlin語言特性&#xff0c;使爬蟲開發更高效、更強大的技巧。 我準備用幾個主要部分來組織內容&#xff0c;每個部分會突出Kotlin特有的"…

PDF編輯工具,免費OCR識別表單

軟件介紹 今天推薦一款功能全面的PDF編輯工具——PDF XChange Editor&#xff0c;支持文本、圖片編輯及OCR識別&#xff0c;還能一鍵提取表單信息&#xff0c;滿足多樣化PDF處理需求。 軟件優勢 該軟件完全免費&#xff0c;下載后雙擊圖標即可直接運行&#xff0c;無需安裝&…

OpenEnler等Linux系統中安裝git工具的方法

在歐拉系統中安裝 Git使用 yum 包管理器安裝&#xff08;推薦&#xff0c;適用于歐拉等基于 RPM 的系統&#xff09;&#xff1a;# 切換到 root 用戶&#xff08;若當前不是&#xff09; su - root# 安裝 Git yum install -y git驗證安裝是否成功&#xff1a;git --version若輸…

UE5 第三人稱視角如何設置camera移動旋轉

“奇怪&#xff0c;這blog不支持md格式嗎”## 第1步&#xff1a;設置玩家Pawn 創建一個藍圖類&#xff0c;繼承自 Pawn&#xff0c;在游戲模式&#xff08;Game Mode&#xff09;中&#xff0c;將這個Pawn設置為默認 在組件面板中&#xff0c;添加一個 Spring Arm 組件 在組件面…

OpenCV 入門教程:開啟計算機視覺之旅

目錄 一、引言? 二、OpenCV 簡介 ?&#xff08;一&#xff09;什么是 OpenCV &#xff08;二&#xff09;OpenCV 的特點與優勢 &#xff08;三&#xff09;OpenCV 的應用領域 三、環境搭建 &#xff08;一&#xff09;安裝 OpenCV 庫? 四、OpenCV 基礎操作 &#xf…

C++高頻知識點(十九)

文章目錄91. TCP斷開連接的時候為什么必須4次而不是3次&#xff1f;92. 為什么要區分用戶態和內核態&#xff1f;93. 說說編寫socket套接字的步驟1. 服務器端編寫步驟1.1 創建套接字1.2 綁定套接字1.3 監聽連接1.4 接受連接1.5 數據傳輸1.6 關閉套接字2. 客戶端編寫步驟2.1 創建…

一個基于 epoll 實現的多路復用 TCP 服務器程序,相比 select 和 poll 具有更高的效率

/*5 - 使用epoll實現多路復用 */ #include <stdio.h> // 標準輸入輸出函數庫 #include <stdlib.h> // 標準庫函數&#xff0c;包含exit等 #include <string.h> // 字符串處理函數 #include <unistd.h> // Unix標準函…

元數據管理與數據治理平臺:Apache Atlas 通知和業務元數據 Notifications And Business Metadata

文中內容僅限技術學習與代碼實踐參考&#xff0c;市場存在不確定性&#xff0c;技術分析需謹慎驗證&#xff0c;不構成任何投資建議。Apache Atlas 框架是一套可擴展的核心基礎治理服務&#xff0c;使企業能夠有效、高效地滿足 Hadoop 中的合規性要求&#xff0c;并支持與整個企…

rem:CSS中的相對長度單位

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 &#x1f35a; 藍橋云課簽約作者、…

【10】C#實戰篇——C# 調用 C++ dll(C++ 導出函數、C++導出類)

文章目錄1 導出C 類函數 、導出 C函數1.1 .h文件1.2 .cpp 文件1.3 C# 調用2 C與C#數據類型對應3 保姆級教程&#xff08;項目搭建、代碼、調用&#xff0c;圖文并茂&#xff09;1 導出C 類函數 、導出 C函數 C 生成動態庫.dll 詳細教程&#xff1a; C 生成動態庫.dll 及 C調用…

Flutter 與 Android NDK 集成實戰:實現高性能原生功能

Flutter 與 NDK 集成實現 Flutter 可以通過 Platform Channels 與原生代碼&#xff08;包括使用 NDK 編寫的 C/C 代碼&#xff09;進行交互。以下是實現 Flutter 與 NDK 集成的步驟&#xff1a; 基本步驟 1. 創建 Flutter 項目 flutter create flutter_ndk_example cd flutter_…

elementui cascader 遠程加載請求使用 選擇單項等

背景&#xff1a;小程序與后端使用自定義表單渲染視圖。發現若沒有全選&#xff08;如&#xff1a;省市縣全部選擇&#xff0c;指定的市3級&#xff09;在pc端就會無法渲染出已經選擇的區縣名稱。 解決方案&#xff1a;參考官方文檔&#xff0c;設置屬性可獨立勾選element ui c…

Unity WebGL打包后啟動方法,本地方法

引言&#xff1a;常見WebGL開啟方法常需要重新打包點擊Build and Run或者將游戲放到Unity的云服務器上&#xff0c;作為開發者而言這兩個方案一個為了開啟再次打包&#xff0c;另一個直接放到了公開環境都不太合適。所以我們需要一個能在本地開啟測試的WebGL的方法。 解決方案 …

安全引導功能及ATF的啟動過程(五)

安全引導功能及ATF的啟動過程&#xff08;五&#xff09; ATF中bl32的啟動 bl31中的runtime_svc_init函數會初始化OP-TEE對應的服務&#xff0c;通過調用該服務項的初始化函數來完成OP-TEE的啟動。對于OP-TEE的服務項會通過DECLARE_RT_SVC宏在編譯時被存放到rt_svc_des段中。該…

Numpy科學計算與數據分析:Numpy入門之多平臺安裝與基礎環境配置

Numpy環境搭建與基礎操作 學習目標 本課程將指導學員在Windows、macOS和Linux三種操作系統上安裝Numpy&#xff0c;并配置開發環境&#xff0c;包括使用Jupyter Notebook和Spyder等IDE的基本操作。通過本課程的學習&#xff0c;學員將能夠獨立搭建Numpy開發環境&#xff0c;并…

內存溢出的原因有哪些,如何排查線上問題?

1. java.lang.OutOfMemoryError: ......java heap space..... 堆棧溢出&#xff0c;代碼問題的可能性極大 2. java.lang.OutOfMemoryError: GC over head limit exceeded 系統處于高頻的GC狀態&#xff0c;而且回收的效果依然 不佳的情況&#xff0c;就會開始報這個錯誤&…

Cesium 無人機視角飛行漫游,截屏

1.實現Cesium模擬無人機離屏渲染&#xff0c;無人機視角飛行漫游。視錐體顯示 具體效果如下地址&#xff1a; 【CESIUM無人機視角飛行截屏】 https://www.bilibili.com/video/BV1zQ89zGE14/?share_sourcecopy_web&vd_source8239ec37df07d6a5d56c9ece00146783

vscode 打開設置

目錄 方法 1&#xff08;快捷鍵&#xff09;&#xff1a; 方法2&#xff0c;界面操作&#xff0c;有時沒有 方法 1&#xff08;快捷鍵&#xff09;&#xff1a; 按下&#xff1a;Cmd Shift P 輸入并選擇&#xff1a;Preferences: Open Settings (JSON) 方法2&#xff0c;…

繁花深處:花店建設的時代意義與多元應用—仙盟創夢IDE

花店當第一縷晨光透過花店的玻璃窗&#xff0c;落在帶著露水的玫瑰花瓣上時&#xff0c;這個空間便不再只是商品交易的場所。花店作為城市肌理中充滿生命力的細胞&#xff0c;承載著遠比銷售鮮花更豐富的社會意義。在快節奏的現代生活中&#xff0c;一束鮮花的綻放不僅是自然之…