@Configuration


每天都過的很快,今天de我依舊碌碌無為,心情依舊很down,加油 ,加油,小菜🦆

(一)標注在類上的應用

@Configuration作用等同於xml 中的<beans></beans> 標簽
MyConfigurationTest.java文件

@Configuration
public class MyConfigurationTest {
    
}

spring-context.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<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 http://www.springframework.org/schema/beans/spring-beans.xsd">    
</beans>

MyConfigurationTest.java的作用等同於spring-context.xml文件

  • 測試一下
  • xml寫法
<?xml version="1.0" encoding="UTF-8"?>
<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 http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id ="myConfigTest" class ="vi.test.MyConfigurationTest2"></bean>
</beans>
public class MyConfigurationTest2 {

    public MyConfigurationTest2() {
        System.out.println("MyConfigurationTest2()     *******");
    }
}
  • @Configuration寫法·
@Configuration
public class MyConfigurationTest {

    public MyConfigurationTest() {
        System.out.println("MyConfigurationTest()   *******");
    }
}
  • test類
public class TestConfig {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(MyConfigurationTest.class);
     
        ApplicationContext context2 = new ClassPathXmlApplicationContext("spring-context.xml");
    }
}
  • 執行結果
  • 文件結構

(二)@Configuration+@Bean

@Bean相當於xml中的<bean></bean> 標簽

public class MyBeanTest {

    public void test() {
        System.out.println("MyBeanTest的test()");
    }

    public void init() {
        System.out.println("init()");
    }

    public void destroy() {
        System.out.println("destroy()");
    }
}
@Configuration
public class MyConfigurationTest {

    public MyConfigurationTest() {
        System.out.println("MyConfigurationTest()   *******");
    }

    @Bean(name="myBeanTest",initMethod = "init",destroyMethod = "destroy")
    @Scope("prototype") // 根據需要定義
    public  MyBeanTest myBeanTest(){
        return new MyBeanTest();
    }
}

  • test
public class TestConfig {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(MyConfigurationTest.class);
        MyBeanTest myBeanTest = (MyBeanTest)context.getBean("myBeanTest");
        myBeanTest.test();
    }
}
  • 運行結果

(三)@Configuration+@Import

  • 普通類
public class MyBeanTest {

    public void test() {
        System.out.println("MyBeanTest的test()");
    }

    public void init() {
        System.out.println("init()");
    }

    public void destroy() {
        System.out.println("destroy()");
    }
}
  • @Import注解
@Configuration
@Import(MyBeanTest.class)
public class MyConfigurationTest {

    public MyConfigurationTest() {
        System.out.println("MyConfigurationTest()   *******");
    }
}
  • test類
public class TestConfig {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(MyConfigurationTest.class);
        MyBeanTest myBeanTest = (MyBeanTest)context.getBean(MyBeanTest.class);
        myBeanTest.test();
    }
}
  • 運行結果

(四)@Configuration+@ComponentScan+@Component

springboot啟動類的用法,只不過springboot的啟動類的注解為聯合注解
大致意思是@ComponentScan(basePackages={"包路徑A","包路徑B",···})掃描指定路徑下的包路徑A,包路徑B···下的被@Component注解的類

  • 加上@ComponentScan注解
@Configuration
@ComponentScan(basePackages = {"vi.test"})
public class MyConfigurationTest {

    public MyConfigurationTest() {
        System.out.println("MyConfigurationTest()   *******");
    }
}
  • 加上@Component注解
@Component
public class MyBeanTest {

    public void test() {
        System.out.println("MyBeanTest的test()");
    }

    public void init() {
        System.out.println("init()");
    }

    public void destroy() {
        System.out.println("destroy()");
    }
}
  • test類
public class TestConfig {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(MyConfigurationTest.class);
        MyBeanTest myBeanTest = (MyBeanTest)context.getBean("myBeanTest");
        myBeanTest.test();
    }
}
  • 運行結果


免責聲明!

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



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