@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