zoukankan      html  css  js  c++  java
  • spring java config 初探

    Java Config 注解

    spring java config作为同xml配置形式的另一种表达形式,使用的场景越来越多,在新版本的spring boot中
    大量使用,今天我们来看下用到的主要注解有哪些。

    1. Configuration: 继承Component注解,默认解析为spring的顶级BeanFactory。作用于类上面,等价于applicationContext.xml文件
    2. Bean :作用在方法上面,方法的返回值为类实例。等同于元素,但是没有scope等元素,猜测可能是此处由代码控制scope。
    3. ComponentScan:类级注解,用于配置扫描的包路径。等同于context:component-scan/元素。主要使用basePackages元素。

    接下来看一个实例

        //注释声明容器
        @Configuration
        public class HelloWorldConfig {
            //配置一个id=helloBean的bean,并返回对应的实例
            @Bean(name = "helloBean")
            public HelloWorld helloWorld() {
                return new HelloWorldImpl();
            }
        }
    
    

    这个写法等同于

        <bean id ="helloBean" class="cn.lee.jason.hello.impl.HelloWorldImpl"></bean>
    

    配置结束了,使用方面基本没有大的差异。
    JavaConfig方式,使用AnnotationConfigApplicationContext类加载JavaConfig配置信息

        class TestHelloConfig{
            public static void main(String[] args) {
              ApplicationContext ctx = 
              new AnnotationConfigApplicationContext(HelloWorldConfig.class);
              
              HelloWorld helloWorld = ctx.getBean(HelloWorld.class);
           
              helloWorld.setMessage("Hello World!");
              helloWorld.getMessage();
           } 
        }
    

    如果需要注册加载多个BeanFactory的时候

    class TestHelloConfig{
            public static void main(String[] args) {
              AnnotationConfigApplicationContext ctx = 
                 new AnnotationConfigApplicationContext();
              
                 ctx.register(AppConfig.class, OtherConfig.class);
                 ctx.register(AdditionalConfig.class);
                 ctx.refresh();
              
                 MyService myService = ctx.getBean(MyService.class);
                 myService.doStuff();
           } 
        }
    

    在某种程度上面,java config简化了xml配置,但也导致修改场景丢失了一定的灵活性。面对快速搭建测试环境时比较方面快捷。

  • 相关阅读:
    如何用Map对象创建Set对象
    SpringMVC如何接受POST请求中的json参数
    Eclipse启动的时候提示:Failed to load JavaHL Library.
    spring中的scope详解
    synchronized 与 Lock 的那点事
    (转)Lock和synchronized比较详解
    java事件机制
    linux查看内存占用情况
    Linux命令简写和全称
    人类未来思考
  • 原文地址:https://www.cnblogs.com/jason0529/p/6388440.html
Copyright © 2011-2022 走看看