天天看点

Spring:@Configuration和@Bean注解定义第三方bean的使用以及自动映射配置文件PropertySource注解使用讲解(10)

@Configuration注解

比如有些了类,没有加注解,但是我想让Spring进行管理,比如配置类获取配置文件端口等

  • @Configuration标注在类上,相当于把该类作为spring的xml配置文件中的,相当于beans,作用为:配置spring容器(应用上下文)
  • @bean注解:用于告诉方法产生一个Bean对象,然后这个Bean对象交给Spring管理,Spring将会将这个Bean对象放在自己的IOC容器中
  • 注意点:SpringIOC容器管理一个或者多个bean,这些bean都需要在@Configuration注解下进行创建

Step1:新建AppConfig类

@Configuration
public class AppConfig {
//@Bean注解,表明这个bean交给Spring进行管理,如果没有指定名称,默认采用方法名加第一个字母小写作为bean的名称
//初始化方法和销毁方法在bean中需要先定义好
    @Bean(name = "videoOrder",initMethod = "init",destroyMethod = "destroy")
    @Scope
    public VideoOrder videoOrder(){
        return new VideoOrder();
    }
}
           

Step2:测试

Spring:@Configuration和@Bean注解定义第三方bean的使用以及自动映射配置文件PropertySource注解使用讲解(10)

@PropertySource注解

  • @PropertySource,指定加载配置文件
    • 配置文件映射到实体类

Step1:新建config.properties配置文件

server.host=127.0.0.1

server.port=9090
           

Step2:新建CustomConfig

使用@Value映射到具体的java属性

@Configuration
//指定获取配置文件信息
@PropertySource(value = {"classpath:config.properties"})
public class CustomConfig {

    @Value("${server.host}")
    private String host;

    @Value("${server.port}")
    private int port;

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }
}
           

Step3:实现类方法注入使用

@Service("videoService")
public class VideoServiceImpl implements VideoService {

    @Autowired
    private CustomConfig customConfig;

    public int save(Video video) {

        System.out.println(customConfig.getHost());
        System.out.println("保存video");
        return 1;
    }

}
           

Step4:测试

Spring:@Configuration和@Bean注解定义第三方bean的使用以及自动映射配置文件PropertySource注解使用讲解(10)