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]