spring实战-JavaConfig装配bean

来源:互联网 发布:sql null 替换 0 编辑:程序博客网 时间:2024/05/17 23:51

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

TestMain4

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes=JavaConfig.class)public class TestMain {@Autowiredprivate Config config;@Autowired private OuterConnection outerConnection;@Autowiredprivate Service service;@Testpublic 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就是方法名 */@Beanpublic OuterProxyInfo outerProxy() {return new OuterProxyInfo();}/* * 可以在注入方法中执行任何Java的程序,包括构造注入,属性注入等 通过方法参数自动早spring中搜索符合注入的bean */@Beanpublic 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;}}

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




原创粉丝点击