編寫自己的Springboot啟動類

關于springboot starter

我們在使用springboot時, 會使用到各種starter, 這些starter提高了我們開發(fā)效率, 至于starter是什么? 它是怎么啟動的? 在這里我們要對其做一個詳細的了解

啟動器

springboot的啟動器, springboot在啟動時會掃描所有包下面的 META_INF/spring.factories 文件, 將該文件中所有啟動類全部加載到spring容器中, 我們只需要在 application.yml 中設置對應的啟動配置文件即可

實現(xiàn)一個mysql啟動類

1. 創(chuàng)建maven項目, 添加下面的依賴包
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.3.4.RELEASE</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>
2. 編寫配置類和啟動類
# 配置類
@Data
@ConfigurationProperties(prefix = "inus.mysql")
//@Component
public class MysqlProperites {
    private String driverClassName;
    private String url;
    private String username;
    private String password;
}

# 啟動類
@Configuration
@ConditionalOnWebApplication
@EnableConfigurationProperties(MysqlProperites.class)
//@ComponentScan("com.inus.nacos")
public class MysqlStarterConfiguration {
    @Autowired
    private MysqlProperites properites;

    @Bean
    public Connection connection() throws ClassNotFoundException, SQLException {
        Class.forName(properites.getDriverClassName());
        Connection connection = DriverManager.getConnection(properites.getUrl(), properites.getUsername(),
                properites.getPassword());
        return connection;
    }
}
3. 啟動類添加自啟動
# 新建META-INF/spring.factories

# 添加啟動配置類
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.inus.nacos.configuration.MysqlStarterConfiguration

至此mysql啟動類已經(jīng)編寫完成, 下面我們寫個測試程序測試該啟動類

測試mysql啟動類

1. yml配置
inus:
  mysql:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/xbb_oa?useUnicode=true&characterEncoding=utf8&serverTimezone=CTT
    username: root
    password: root
2. 注入啟動類中的connection
@Autowired
private Connection connection;

@RequestMapping("user")
public User user(String id) throws SQLException {
    PreparedStatement statement = connection.prepareStatement("select * from oa_user where id=?");
    statement.setString(1, id);

    User user = null;
    ResultSet rs = statement.executeQuery();
    while (rs.next()) {
        user = new User()//
                .setName(rs.getString("name"))//
                .setAccount(rs.getString("account"));
        break;
    }
    return user;
}
微信截圖_20201012104051.png
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末搏嗡,一起剝皮案震驚了整個濱河市镊讼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌垄开,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件摘昌,死亡現(xiàn)場離奇詭異哥攘,居然都是意外死亡,警方通過查閱死者的電腦和手機晶伦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悟民,“玉大人坝辫,你說我怎么就攤上這事∩淇鳎” “怎么了近忙?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵竭业,是天一觀的道長。 經(jīng)常有香客問我及舍,道長未辆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任锯玛,我火速辦了婚禮咐柜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘攘残。我一直安慰自己拙友,他們只是感情好,可當我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布歼郭。 她就那樣靜靜地躺著遗契,像睡著了一般。 火紅的嫁衣襯著肌膚如雪病曾。 梳的紋絲不亂的頭發(fā)上牍蜂,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天,我揣著相機與錄音泰涂,去河邊找鬼鲫竞。 笑死,一個胖子當著我的面吹牛逼蒙,可吹牛的內(nèi)容都是我干的从绘。 我是一名探鬼主播,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼其做,長吁一口氣:“原來是場噩夢啊……” “哼顶考!你這毒婦竟也來了赁还?” 一聲冷哼從身側(cè)響起妖泄,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎艘策,沒想到半個月后蹈胡,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡朋蔫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年罚渐,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驯妄。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡荷并,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出青扔,到底是詐尸還是另有隱情源织,我是刑警寧澤翩伪,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站谈息,受9級特大地震影響缘屹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜侠仇,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一轻姿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧逻炊,春花似錦互亮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至溺森,卻和暖如春慕爬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背屏积。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工医窿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人炊林。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓姥卢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親渣聚。 傳聞我的和親對象是個殘疾皇子独榴,可洞房花燭夜當晚...
    茶點故事閱讀 43,554評論 2 349