zoukankan      html  css  js  c++  java
  • 【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>

    分享链接:

    工作之余,开了一个淘宝小店,分别销售日常必备生活用品,期待您的光临!点击下图,跳转店铺首页!
  • 相关阅读:
    关于jQuery的两对小括号()()的说明
    高效能 DBA 的七个习惯
    Div+CSS网站设计的优点
    .Net上传图片按比例自动缩小或放大
    SEO草根技术基础—DIV+CSS
    asp.net连接Mysql(connector/net 5.0)
    大型网站(高访问、海量数据)技术架构
    ISO Latin1字符集
    CuteEditor学习总结技巧
    Craigslist 的数据库架构
  • 原文地址:https://www.cnblogs.com/xjf125/p/15154637.html
Copyright © 2011-2022 走看看