• 【Java高级】注解篇


      前言
      @Configuration 用于定义配置类,可替换XML配置文件,被注解的类内部包含一个或多个@Bean注解方法。可以被AnnotationConfigApplicationContext或者AnnotationConfigWebApplicationContext 进行扫描。用于构建bean定义以及初始化Spring容器。

      它是在spring3.0版本之后出现的。此注解是spring支持注解驱动开发的一个标志。表明当前类是spring的一个配置类,作用是替代spring的applicationContext.xml。但其本质就是@Component注解,被此注解修饰的类,也会被存入spring的IOC容器。
      属性:
      value:用于存入spring的ioc容器中Bean的id
      使用场景:
      在注解驱动开发时,用于缩写配置的类,通常可以使用此注解。一般情况下,我们的配置也会分为主次配置,@Configureation一般出现在主配置类上。值得注意的是,如果我们在注解驱动开发时,构建ioc容器使用的是传入字节码的构造函数,此注解可以省略,但是如果传入的是一个包,此注解则不能省略。

      实例

       @Configuration 加载Spring方法

      Car.java

    public class Car {
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
    }

      定义Config类

    @Configuration
    public class Config {
        public Config() {
            System.out.println("TestConfig容器初始化...");
        }
    
        @Bean(name = "getMyCar")
        public Car getCar() {
            Car c = new Car();
            c.setName("dankun");
            return c;
        }
    }

      实例化

    public void testConfig() {
            ApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
            Car car = (Car)context.getBean("car");
            System.out.println(car.getName());
        }
    // 输出
    // TestConfig容器初始化...
    // dankun

      @Configuration + @Component

      @Configuration也附带了@Component的功能。所以理论上也可以使用@Autowared功能。上述代码可以改成下面形式
      Car.java

    @Component
    public class Car {
        @Value("dankun")
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
    }

      Config.java

    @Configuration
    @ComponentScan("com.wuyue.annotation")
    public class Config {
        public Config() {
            System.out.println("TestConfig容器初始化...");
        }
    }

      测试主入口

    public class TestConfig {
        @Test
        public void testConfig() {
            ApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
            Car car = (Car)context.getBean("car");
            System.out.println(car.getName());
        }
    }
    // 输出
    // TestConfig容器初始化...
    // dankun

      总结

    • @Configuation等价于<Beans></Beans>
    • @Bean 等价于<Bean></Bean>
    • @ComponentScan等价于<context:component-scan base-package="com.dxz.demo"/>
    • @Component 等价于<Bean></Bean>

    分享链接:

    工作之余,开了一个淘宝小店,分别销售日常必备生活用品,期待您的光临!点击下图,跳转店铺首页!
  • 相关阅读:
    amfphp1.9 class mapping初探
    C#程序打包.exe应用程序
    数据库备份方案
    ListView 控件使用
    在C#中运用SQLDMO备份和恢复Microsoft SQL Server数据库
    .NET
    转载:MATLAB 符号函数作图
    整理雷达相关
    Python 程序 运行过程
    struts2 文件上传显示进度条
  • 原文地址:https://www.cnblogs.com/xjf125/p/15154637.html
Copyright © 2020-2023  润新知