>>分享流行的Java框架以及开源软件,对孙卫琴的《精通Spring:Java Web开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 19054 个阅读者 刷新本主题
 * 贴子主题:  @Configuration注解的用法 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2024-03-30 06:37:47     消息  查看  搜索  好友  邮件  复制  引用

@Configuration注解主要用于定义配置类.可替换xml配置文件.被注解的类内部包含一个或多个被@Bean注解的方法.

这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描.并用于构建bean定义.初始化Spring

容器.

注意:带有@Configuration的注解是配置类.在配置类中写Bean.通过@Bean注解创建Bean对象.有这样一个例子:

配置类:相当于一个Spring容器
package com.jin.abc;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.jin.domain.Dog;

@Configuration            //注意写法
public class ApplicationConfig {

    public ApplicationConfig() {
        System.out.println("Spring容器启动");
    }
    
    
    @Bean(name="dog")            //定义一个bean,相当于<bean id="dog" class="com.jin.domain">
    public Dog getDog(){
        return new Dog("小白","白色");
    }
}

这个配置类就相当于下面这个配置文件的写法:


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:tx="http://www.springframework.org/schema/tx"
    
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
        ">
    <bean name="dog" class="com.jin.domain">
        <property name="name" value="小白"/>
        <property name="color" value="白色"/>
    </bean>
    

    
</beans>

下面是要从该Spring容器中拿到Dog    实例对象


一个具体的应用类:要用到Dog对象.

可以这样拿:

package com.jin.abc;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import com.jin.domain.Dog;

public class TestApplicationConfig {
    public static void main(String[] args) {
    
        //以注解的方式获取Spring容器中的对象,只不过该Spring容器的生成是在配置类中,而以前的获取Spring容器的方式是:
        
        /*以前获取Spring容器的方式:
        
            ApplicationContext ac = new ClassPathXmlApplicationContext("spring配置文件.xml");
            
            Dog dog = ac.getBean("dog");
            
            
            其实,对比这两种方式,各有各的好,xml方式,传统,比较熟悉.注解的方式,比较新颖,灵活,更加方便.轻盈.更加清晰.
        
        
        */

        
        AnnotationConfigApplicationContext acac = new AnnotationConfigApplicationContext(ApplicationConfig.class);
        
        Dog dog = (Dog)acac.getBean("dog");
        
        System.out.println(dog);
    }
}

运行结果:

Spring容器启动
Dog [name=小白, age=白色]


Dog类:

package com.jin.domain;

import java.io.Serializable;

public class Dog implements Serializable {
    
    
    private String name;
    private String age;
    
    
    
    public Dog(String name, String age) {
        super();
        this.name = name;
        this.age = age;
    }
    public Dog() {
        super();
        // TODO Auto-generated constructor stub
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Dog [name=" + name + ", age=" + age + "]";
    }
    
    
}

依赖包:

<dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>4.2.4.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
          <version>4.2.4.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
          <version>1.2</version>
      </dependency>
      <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.12</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-aop</artifactId>
          <version>4.2.4.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-aspects</artifactId>
          <version>4.2.4.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-beans</artifactId>
          <version>4.2.4.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>4.2.4.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-core</artifactId>
          <version>4.2.4.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-expression</artifactId>
          <version>4.2.4.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jms</artifactId>
          <version>4.2.4.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-messaging</artifactId>
          <version>4.2.4.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-tx</artifactId>
          <version>4.2.4.RELEASE</version>
      </dependency>

程序猿的技术大观园:www.javathinker.net


程序猿的技术大观园:www.javathinker.net
  Java面向对象编程-->Swing组件(下)
  JavaWeb开发-->JSP中使用JavaBean(Ⅰ)
  JSP与Hibernate开发-->映射对象标识符
  Java网络编程-->用Axis发布Web服务
  精通Spring-->通过Axios访问服务器
  Vue3开发-->虚拟DOM和render()函数
  MyBatis+Spring 事务管理
  Spring事务容易掉入的坑
  在Spring MVC中配置线程池,进行异步请求处理
  Spring MVC的@ExceptionHandler注解的用法
  @Resource注解的用法
  RESTful API的最佳设计原则
  微服务架构的优点和缺点
  Spring Security中使用的责任链模式
  Spring+JPA+ehcache开启二级本地缓存
  RESTful 架构详解
  Axis、Axis2和CXF比较
  一篇文章概括Spring Cloud微服务教程
  Spring与MyBatis整合
  Java核心库实现AOP过程
  Hibernate拦截器与监听器
  更多...
 IPIP: 已设置保密
树形列表:   
每一次扬起风帆去远航,都难免会有阻挡,只要有梦想在心... mikhop 2024-03-30 06:37:47
1页 1条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。