美文网首页
Spring注解中@Configuration和@Configu

Spring注解中@Configuration和@Configu

作者: 抄无止境 | 来源:发表于2019-12-26 18:40 被阅读0次

    来自
    Spring dependency injection – @Configurable
    Spring framework @Configurable vs @Configuration

    @Configuration

    该注解是可以用来替代XML文件。
    以前我们配置bean时,都是写在applicationContext.xml文件中的。
    有了这个注解后,我们就可以编写一个类在其上面加上该注解。即配置类。
    在配置类中可以在方法上加@Bean注解定义其中的Bean

    @Configurable

    现在假设,我们想在非Spring管理的类中使用依赖注入;
    比如:手动new出来的对象,正常情况下,Spring是无法依赖注入的,这个时候可以使用@Configurable注解;

    现在假设我们有如下代码:

    public class CarSalon {
        //...
        public void testDrive() {
            Car car = new Car();
            car.startCar();
        }
    }
     
    @Component
    public class Car {
        @Autowired
        private Engine engine;
        @Autowired
        private Transmission transmission;
     
        public void startCar() {
            transmission.setGear(1);
            engine.engineOn();
            System.out.println("Car started");
        }
    }
     
    @Component
    public class Engine {
    //...
    }
     
    @Component
    public class Transmission {
    //...
    }
    
    

    代码运行时,会把Null异常。因为正常情况下,Spring无法对new出来的对象进行依赖注入;

    在此基础上,我们使用@Configurable注解进行修改,如下:

    @Configurable(preConstruction = true)
    @Component
    public class Car {
     
        @Autowired
        private Engine engine;
        @Autowired
        private Transmission transmission;
     
        public void startCar() {
            transmission.setGear(1);
            engine.engineOn();
     
            System.out.println("Car started");
        }
    }
    

    讲解:
    @Configurable(preConstruction = true) 这个注解的作用是:
    告诉Spring在构造函数运行之前将依赖注入到对象中。
    使用该注解需要注意的地方:
    ① 需要在项目中添加如下jar包:aspectj-x.x.x.jar, aspectjrt.jar, aspectjveawer-x.x.x.jar
    ② 将基于Spring的java代理添加到运行配置中:-javaagent:"PATH\spring-instrument-x.x.x.jar"
    现在,运行就不会报错了。

    相关文章

      网友评论

          本文标题:Spring注解中@Configuration和@Configu

          本文链接:https://www.haomeiwen.com/subject/dsyloctx.html