>>分享流行的Java框架以及开源软件,对孙卫琴的《精通Spring:Java Web开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 19135 个阅读者 刷新本主题
 * 贴子主题:  @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面向对象编程-->图形用户界面(上)
  JavaWeb开发-->JavaWeb应用入门(Ⅰ)
  JSP与Hibernate开发-->Java应用分层架构及软件模型
  Java网络编程-->用Spring整合CXF发布Web服务
  精通Spring-->Vue简介
  Vue3开发-->组合(Composition)API
  一篇文章让你彻底了解什么叫Netty!
  教你手撸一个Spring框架,从Spring.xml解析到注册Bean对象!
  面试官:Mybatis里的设计模式有哪些?脱口而出8种
  面试官问什么是Spring循环依赖,该如何回答?
  99%的人都能看懂的“熔断”以及最佳实践
  Spring事务的声明和管理
  谈谈响应式编程
  Spring配置中bean元素的id和name属性的区别
  @Resource注解的用法
  Spring Boot、SpringMVC进行i18n国际化支持:使用MessageSou...
  Spring Data JPA详解
  Spring MVC处理异步请求
  Spring MVC控制器类的方法的所支持的方法参数类型
  Spring Cloud构建微服务架构的断路器
  RESTful API 设计最佳实践
  更多...
 IPIP: 已设置保密
楼主      
该用户目前不在线 mikhop 
  

威望: 0
级别: 侠客
魅力: 210
经验: 210
现金: 1176
发文章数: 22
注册时间: 0001-01-01
 消息  查看  搜索  好友  邮件  复制  引用


每一次扬起风帆去远航,都难免会有阻挡,只要有梦想在心中SG飞艇走势图,未来就充满着希望;每一次张开翅膀去飞翔,都难免会受伤,只要有梦想在激励,台湾宾果走势图未来就承载着希望。梦想,在心中埋藏幸运时时彩走势图,它已经在慢慢走来,给人们带来希望,光芒和启迪。
发文章时间 2024-03-30 06:37:47
 IPIP: 已设置保密 1 楼     
1页 1条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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