zoukankan      html  css  js  c++  java
  • Spring 基于 Java 的配置

    前面已经学习如何使用 XML 配置文件来配置 Spring bean。

    基于 Java 的配置可以达到基于XML配置的相同效果。

    基于 Java 的配置选项,可以使你在不用配置 XML 的情况下编写大多数的 Spring

    @Configuration 和 @Bean 注解

    带有 @Configuration 的注解类表示这个类可以使用 Spring IoC 容器作为 bean 定义的来源。

    @Bean 注解告诉 Spring,一个带有 @Bean 的注解方法将返回一个对象,该对象应该被注册为在 Spring 应用程序上下文中的 bean。

    最简单可行的 @Configuration 类如下所示:

    package hello;
    import org.springframework.context.annotation.*;
    @Configuration
    public class HelloWorldConfig {
       @Bean 
       public HelloWorld helloWorld(){
          return new HelloWorld();
       }
    }
    

    上面的代码将等同于下面的 XML 配置:

    <beans>
       <bean id="helloWorld" class="hello.HelloWorld" />
    </beans>
    

    在这里,带有 @Bean 注解的方法名称作为 bean 的 ID,它创建并返回实际的 bean。

    你的配置类可以声明多个 @Bean。

    一旦定义了配置类,你就可以使用 AnnotationConfigApplicationContext 来加载并把他们提供给 Spring 容器,如下所示:

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

    一个例子

    • 新建Spring项目

    • 创建 Java 类 HelloWorldConfig、HelloWorld 和 MainApp

    这里是 HelloWorldConfig.java 文件的内容:

    package hello;
    import org.springframework.context.annotation.*;
    
    @Configuration
    public class HelloWorldConfig {
        @Bean
        public HelloWorld helloWorld(){
            return new HelloWorld();
        }
    }
    

    这里是 HelloWorld.java 文件的内容:

    package hello;
    
    public class HelloWorld {
        private String message;
        public void setMessage(String message){
            this.message = message;
        }
        public String getMessage(){
            System.out.println("the  Message : " + message);
            return message;
        }
    }
    

    下面是 MainApp.java 文件的内容:

    package hello;
    //import org.springframework.context.support.AbstractApplicationContext;
    import org.springframework.context.ApplicationContext;
    //import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.context.annotation.*;
    
    public class MainApp {
        public static void main(String[] args) {
            ApplicationContext context =
                    new AnnotationConfigApplicationContext(HelloWorldConfig.class);
            HelloWorld obj = context.getBean(HelloWorld.class);
            obj.setMessage("你好");
            obj.getMessage();
        }
    }
    

    运行结果

    the  Message : 你好
    

    每天学习一点点,每天进步一点点。

  • 相关阅读:
    setTimeout,clearTimeout,setInterval,clearInteral详解
    关于JS读取DOM对象(标签)的自定义属性
    jquery.form.js官方插件介绍Form插件,支持Ajax,支持Ajax文件上传
    按回车键切换input鼠标光标
    电压跟随器的作用,以及其中两个电阻的作用?
    阅读RB521S30肖特基二极管的datasheet
    配置linux内核,解决lcd logo和十分钟息屏!
    配置linux,关闭LCD的console控制台输出。
    记录一次编译linux内核或者说编译dtbs的问题!!
    copy_from_user的详细用法!
  • 原文地址:https://www.cnblogs.com/youcoding/p/12790596.html
Copyright © 2011-2022 走看看