(D)spring boot使用注解類代替xml配置實例化bean


bean經常需要被實例化,最常見的就是new一個唄,Bean bean = new Bean(),方便好用還快捷。

然而在我們剛開始學習寫i項目的時候卻發現,new不好用哦,並且也不報錯,根本不知道怎么找原因

比如

package com.example;

import org.springframework.boot.Banner;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import com.example.bean.Book;
import com.example.demo.test.TestConfiguration;




@SpringBootApplication
public class Application{

    public static void main(String[] args) {
        
          SpringApplicationBuilder builder = new SpringApplicationBuilder(Application.class);
            //修改Banner的模式為OFF,啟動時控制台將不打印顯示字符wow
            builder.bannerMode(Banner.Mode.OFF).run(args);

            Book bookconfig = new Book();
            System.out.println( "emmmm..... The BookName is "
                                                                +bookconfig.getName()
                                                                +";and Book Author is "
                                                                +bookconfig.getAuthor()
                                                                +";and Book price is "
                                                                +bookconfig.getPrice());
            
        //SpringApplication.run(Application.class, args);//默認啟動方式
    }


}

控制台打印的卻是

 

 打印出來是null,可見實例化了一個bookconfig,卻並沒有從屬性文件中讀到屬性值。

按照spring boot簡化配置的思路以及spring的尿性,啟動注解大法吧!

首先在Book類上@Scope("singleton"),表明這是一個單例類,容器中只有一個該類的實例,然后准備一個配置類

package com.example.demo.test;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
//配置類,用來取代spring.xml那一堆<beans></beans>頭文件
@Configuration
@ComponentScan(value="com.example")
public class TestConfiguration {
    public TestConfiguration() {
        System.out.println("Configuration容器啟動初始化。。。");
    }
}

這個配置類的作用注釋中也都寫了,就是我們常見的spring.xml里面的那一堆頭文件 <beans></beans>節點間的內容。

嗯,意思就是寫了這個清爽的配置類就不用在spring.xml里面配置各種bean了。@Configuration  @ComponentScan(value="com.example")這兩個注解的作用就要自己看了。推薦

https://blog.csdn.net/u012702547/article/details/53633872

然而真的不需要spring.xml了嗎?naive!少不了的不要想了。

怎么使用這個配置類呢?

package com.example;

import org.springframework.boot.Banner;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import com.example.bean.Book;
import com.example.demo.test.TestConfiguration;




@SpringBootApplication
public class Application{

    public static void main(String[] args) {
        
          SpringApplicationBuilder builder = new SpringApplicationBuilder(Application.class);
            //修改Banner的模式為OFF,啟動時控制台將不打印顯示字符wow
            builder.bannerMode(Banner.Mode.OFF).run(args);
            @SuppressWarnings("resource")
          ApplicationContext context = new AnnotationConfigApplicationContext(TestConfiguration.class);

            Book bookconfig = context.getBean(Book.class);
            Book bookconfig2 =  context.getBean(Book.class);
      
            System.out.println( "測試@Scope注解的類的設計模式"+bookconfig.equals(bookconfig2));
            System.out.println( "emmmm..... The BookName is "
                                                                +bookconfig.getName()
                                                                +";and Book Author is "
                                                                +bookconfig.getAuthor()
                                                                +";and Book price is "
                                                                +bookconfig.getPrice());
            
        //SpringApplication.run(Application.class, args);//默認啟動方式
    }


}

哈哈哈哈,是的,如你所見,new一下這個配置類就好了。

然后直接把需要的類拿來用。

嗯,這樣看起來是不需要每次手動去new一個,然而,並沒有節約代碼量啊衰。。。。。

 

 ABCD四篇合集項目地址:https://github.com/tuliptulpen/studyspringboot

 

 

 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM