首页 > 其他 > 详细

@configuration

时间:2019-12-24 01:51:45      阅读:124      评论:0      收藏:0      [点我收藏+]

每天都过的很快,今天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();
    }
}
  • 运行结果
    技术分享图片

@configuration

原文:https://www.cnblogs.com/VVII/p/12088975.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!