栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

spring boot 三:4.底层注解@ImportResource导入spring配置文件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring boot 三:4.底层注解@ImportResource导入spring配置文件

spring boot 三:4.底层注解@importResource导入spring配置文件

1 前言

springboot的底层注解,经常会使用@AliasFor作为注解的value的别名,比如下面@importResource注解,既可以使用value,也可以使用locations,一般不同时存在,如果同时存在时,必须值相等,否则抛错:

如下配置类:

启动主程序类:

修改为同一个值时:

启动主程序类无误

2 使用

在配置类上,增加@importResource注解,是为了导入spring的xml形式的bean,注册spring的这些xml形式组件。

比如resources目录下,新建一个beans.xml,内容如下:




        
            
            
            
            
        


实体类Fruit如下所示:

package com.xiaoxu.domain;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.math.BigDecimal;
import java.util.Date;



@Component
@ConfigurationProperties(prefix = "new-fruit")
public class Fruit {
    
    private String fname;
    
    private BigDecimal price;
    
    private long count;

    
    private Date dropDate;

    public Fruit() {
    }

    public Fruit(String fname, BigDecimal price, long count, Date dropDate) {
        this.fname = fname;
        this.price = price;
        this.count = count;
        this.dropDate = dropDate;
    }

    public Date getDropDate() {
        return dropDate;
    }

    public void setDropDate(Date dropDate) {
        this.dropDate = dropDate;
    }

    public String getFname() {
        return fname;
    }

    public void setFname(String fname) {
        this.fname = fname;
    }

    public BigDecimal getPrice() {
        return price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    public long getCount() {
        return count;
    }

    public void setCount(long count) {
        this.count = count;
    }

    @Override
    public String toString() {
        return "水果{" +
                "fname='" + fname + ''' +
                ", price=" + price +
                ", count=" + count +
                ", dropDate=" + dropDate +
                '}';
    }
}

配置类修改如下:

package com.xiaoxu.config;

import com.xiaoxu.domain.Fruit;
import com.xiaoxu.domain.User;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.*;

import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;


//@import({User.class})
@Configuration(proxyBeanMethods = false)
@ConditionalOnMissingBean(name = "my")
@importResource(value = "classpath:beans.xml",locations = "classpath:beans.xml")
public class MyConfig {
//    @Bean(name = "fruit")
    @Bean(name = "myfruit",value = "myfruit")
//    @ConditionalOnBean(name = "myuser")
    public Fruit getFruit() throws ParseException {
        Fruit fruit = new Fruit();
        fruit.setFname("桃子");
        fruit.setPrice(new BigDecimal("12.5"));
        fruit.setCount(120);
        SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(s.format(new Date()));
        String d = s.format(new Date());
        System.out.println(s.parse(d));
        fruit.setDropDate(s.parse(d));
        return fruit;
    }

    @Bean
    public User getUser(){
        User u=new User();
        u.setName("xiaoxu");
        u.setAge((byte)29);
        u.setMoney(new BigDecimal("10"));
        u.setId(1234);
        return u;
    }
}

修改主程序类,观察xml的lizhi_fruit组件是否注册成功:

package com.xiaoxu;

import com.xiaoxu.domain.User;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.ComponentScan;


@SpringBootApplication(scanbasePackages = {"com.xiaoxu"})
//@EnableAutoConfiguration
//@ComponentScan
//@SpringBootConfiguration
public class MainApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
        System.out.println("*******开始*********");
        User bean = run.getBean(User.class);
        boolean myfruit = run.containsBean("myfruit");
        System.out.println("是否存在组件myfruit:"+myfruit);
        boolean getuser = run.containsBean("getUser");
        System.out.println("是否存在组件myuser:"+getuser);
        boolean lizhi = run.containsBean("lizhi_fruit");
        System.out.println("是否存在组件lizhi:"+lizhi);
        System.out.println("*******结束*********");
    }
}

结果如下:

*******开始*********
是否存在组件myfruit:true
是否存在组件myuser:true
是否存在组件lizhi:true
*******结束*********
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/703585.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号