Spring代码实例系列-05:通过注解@Configuration、@Bean和@Import定义bean

超级通道: Spring代码实例系列-绪论

Spring中有三种定义Bean的方式:
1. *.xml/<bean>/<import>
2. @Configuration/@Bean/@Import
3. @Component/@Controller/@Service/@Dao

之前的实例中,都是通过第一种方式进行的。本章节记录@Configuration/@Bean/@Import的bean定义方式。

0.程序目录

project
    \---src
        \---main
            \---java
                \---pers
                    \---hanchao
                        \---configurationbean
                            \---App.java
                            \---AnnotationConfig.java
                            \---RedisConfig.java
                            \---SolrConfig.java
                            \---RedisUtils.java
                            \---SolrUtils.java

1.App.java

package pers.hanchao.configurationbean;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * <p>通过@Configuration注解配置文件,通过@Bean注解bean,通过@Import注解多个配置文件</p>
 * @author hanchao 2018/1/7 19:12
 **/
public class App {

    public static void main(String[] args) {
        /**
         * 以xml的形式:
         * ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
         *
         * 以注解的形式(不需要配置文件)
         * ApplicationContext context = new AnnotationConfigApplicationContext(AnnotationConfig.class);
         */
        ApplicationContext context = new AnnotationConfigApplicationContext(AnnotationConfig.class);
        RedisUtils redisUtils = (RedisUtils) context.getBean("redisUtils");
        System.out.println(redisUtils.getInstance());
        SolrUtils solrUtils = (SolrUtils) context.getBean("solrUtils");
        System.out.println(solrUtils.getInstance());
    }
}

2.AnnotationConfig.java

起到applicationContext.xml的作用。

package pers.hanchao.configurationbean;

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
/**
 * <p>通过@Configuration注解配置文件,通过@Import注解多个配置文件</p>
 * @author hanchao 2018/1/7 19:32
 **/
@Configuration
@Import({RedisConfig.class,SolrConfig.class})
public class AnnotationConfig {}

3.RedisConfig.java

起到applicationContext-redis.xml的作用。

package pers.hanchao.configurationbean;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * <p>通过@Configuration注解配置文件,通过@Bean注解bean</p>
 * @author hanchao 2018/1/7 19:32
 **/
@Configuration
public class RedisConfig {
    @Bean("redisUtils")
    public RedisUtils redisInit(){
        //模拟读取redis的配置文件获取配置
        RedisUtils redisUtils = new RedisUtils();
        redisUtils.setHost("222.222.222.222");
        redisUtils.setPort(6379);
        redisUtils.setCluster(false);
        redisUtils.setPassword("12345");
        return redisUtils;
    }
}

4.SolrConfig.java

起到applicationContext-solr.xml的作用。

package pers.hanchao.configurationbean;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * <p>通过@Configuration注解配置文件,通过@Bean注解bean</p>
 * @author hanchao 2018/1/7 19:32
 **/
@Configuration
public class SolrConfig {

    @Bean("solrUtils")
    public SolrUtils solrInit(){
        //模拟读取solr的配置文件获取配置
        SolrUtils solrUtils = new SolrUtils();
        solrUtils.setHost("130.10.10.10");
        solrUtils.setPort(8983);
        solrUtils.setCloud(true);
        return  solrUtils;
    }
}

5.RedisUtils.java

package pers.hanchao.configurationbean;

public class RedisUtils {
    private String host;
    private int port;
    private boolean isCluster;
    private String password;

    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;
    }

    public boolean isCluster() {
        return isCluster;
    }

    public void setCluster(boolean cluster) {
        isCluster = cluster;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getInstance(){
        return "RedisUtils[host:" + host
                + ",port:" + port
                + ",password:" + password
                + ",isCluster:" + isCluster + "]";
    }
}

6.SolrUtils.java

package pers.hanchao.configurationbean;

public class SolrUtils {
    private String host;
    private int port;
    private boolean isCloud;

    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;
    }

    public boolean isCloud() {
        return isCloud;
    }

    public void setCloud(boolean cloud) {
        isCloud = cloud;
    }

    public String getInstance(){
        return "SolrUtils[host:" + host
                + ",port:" + port
                + ",isCloud:" + isCloud + "]";
    }
}

7.result

RedisUtils[host:222.222.222.222,port:6379,password:12345,isCluster:false]
SolrUtils[host:130.10.10.10,port:8983,isCloud:true]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值