spring实战-JavaConfig装配bean

Spring还提供了基于Java配置(JavaConfig)来装配bean,在编程时推荐使用类型安全,且比XML更加强大的JavaConfig。

TestMain4

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=JavaConfig.class)
public class TestMain {

	@Autowired
	private Config config;
	
	@Autowired 
	private OuterConnection outerConnection;
	
	@Autowired
	private Service service;
	
	@Test
	public void test(){
		System.out.println(config.getTimeOut());
		System.out.println(outerConnection.getProxyInfo().getIp());
		System.out.println(service.getConnection().getProxyInfo().getIp());
	}
}

JavaConfig

package com.halfworlders.web;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

import com.halfworlders.outer.OuterConnection;
import com.halfworlders.outer.OuterProxyInfo;

/**
 * 1,@ComponentScan 等价于<context:component-scan> 
 * 2,@ComponentScan不带参数时, 表示扫描该JavaConfig文件所在包以及子包内的所有带注解的Bean
 * 3,系统开发时通常将JavaConfig集中放在一个包内,以方便管理,此时可以通过basePackages参数设置要扫描的包及其子包
 * 4,还可以通过basePackageClasses参数设置类名,表示要扫描该类所在的包以及子包
 * 以上只适合扫描自定义的带注解Bean,如果希望把非本项目内的,通过jar包引入的类注入sping中,而引入的类又没有spring注解怎么办?
 * 5,可以通过@Bean注解
 */
@Configuration
@ComponentScan(basePackages = { "com.halfworlders.web", "com.halfworlders.dao" }, basePackageClasses = {Service.class })
public class JavaConfig {

	/*
	 * 通过@Bean注解将ProxyInfo注入到spring中,默认是单例模式,并且bean的id就是方法名
	 */
	@Bean
	public OuterProxyInfo outerProxy() {
		return new OuterProxyInfo();
	}

	/*
	 * 可以在注入方法中执行任何Java的程序,包括构造注入,属性注入等 通过方法参数自动早spring中搜索符合注入的bean
	 */
	@Bean
	public OuterConnection ourteConnection(OuterProxyInfo proxyInfo) {
		OuterConnection connection = new OuterConnection();
		connection.setProxyInfo(proxyInfo);
		return connection;
	}
}


OuterProxyInfo

package com.halfworlders.outer;

public class OuterProxyInfo {
	private String ip = "127.0.0.1";
	private int port;
	
	public String getIp() {
		return ip;
	}
	public void setIp(String ip) {
		this.ip = ip;
	}
	public int getPort() {
		return port;
	}
	public void setPort(int port) {
		this.port = port;
	}
}

OuterConnection

package com.halfworlders.outer;

public class OuterConnection {

	private OuterProxyInfo proxyInfo;
	
	public OuterConnection(){
	}
	
	public OuterConnection(OuterProxyInfo proxy){
		this.proxyInfo = proxy;
	}
	
	public OuterProxyInfo getProxyInfo() {
		return proxyInfo;
	}

	public void setProxyInfo(OuterProxyInfo proxyInfo) {
		this.proxyInfo = proxyInfo;
	}
}

其他类见上节 点击打开链接




  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值