[001]一步一步学懂spring - 初识Java配置
2017-07-17 12:28
381 查看
Spring的配置随着spring的版本的升级大概经历了3个阶段,从最初的xml配置方式到使用注解配置,到现在的使用Java类来进行配置。在Spring 1版本的时候,只有xml配置,所有的bean都需要使用xml来进行配置,导致项目中出现大量的配置文件,到了Spring 2版本的时候随着jdk1.5注解的出现,spring的配置转向注解的方式。于是在这个阶段,到底是使用注解的方式来配置还是使用配置文件的方式来配置,最终形成一个共识,基本配置使用xml,业务配置使用注解。到了spring3的时代,推荐使用Java进行配置。我们可能对使用xml配置和使用注解的方式配置都比较好理解,而对于使用Java类进行配置感到比较不可思议,我们就以Java配置的方式实现依赖注入。
我们要模拟一个依赖注入,至少要有一个生产者,就是服务的提供方,还要有一个消费者,服务的调用方。另外就是一个配置类和一个测试类。下面是代码
服务提供方
服务提供方非常简单,就是一个完全纯净的JavaBean,连注解也都没有了,是不是感觉很清爽!代码完全没有侵入。这里提供了一个sayHello的服务。
服务调用方
服务的调用方也是一个完全纯净的JavaBean,依然非常清爽。这里调用testServce提供的sayHello服务
Java配置
这里是我们的核心配置,在这里我们看到了注解。
@Configuration 表示的是这个类是一个配置类
@Bean 位置是在方法上,表示配置的是一个JavaBean,并将此bean交给spring容器来管理
Configuration 这个注解比较好理解,就是说JavaConfig这个类是一个spring的配置类
Bean这个注解放到了方法上,而方法的返回值就是一个JavaBean对象,也就是说,这里声明了TestService这么一个bean到spring容器中
下面的这个bean,是由spring来管理了服务的消费方,我们知道服务消费方是依赖服务的提供方的,如何解决依赖呢,我们可以看到,首先创建了一个服务的消费方这么一个对象,然后调用set方法将服务的提供方注入,这样就完成了依赖注入。
测试代码
这里就非常简单了,告诉spring配置类,然后从容器中拿到服务的消费方,调用sayHello方法。这个时候,服务的消费方就会调用服务的提供方的sayHello方法,输入我们期望的结果
我们要模拟一个依赖注入,至少要有一个生产者,就是服务的提供方,还要有一个消费者,服务的调用方。另外就是一个配置类和一个测试类。下面是代码
服务提供方
服务提供方非常简单,就是一个完全纯净的JavaBean,连注解也都没有了,是不是感觉很清爽!代码完全没有侵入。这里提供了一个sayHello的服务。
public class TestService { public String sayHello(String name) { return "Hello " + name; } }
服务调用方
服务的调用方也是一个完全纯净的JavaBean,依然非常清爽。这里调用testServce提供的sayHello服务
public class UseTestService { private TestService testService; public String sayHello(String name) { return testService.sayHello(name); } public TestService getTestService() { return testService; } public void setTestService(TestService testService) { this.testService = testService; } }
Java配置
@Configuration public class JavaConfig { @Bean public TestService testService () { return new TestService(); } @Bean public UseTestService useTestService() { UseTestService service = new UseTestService(); service.setTestService(testService()); return service; } // 第二种配置方式,直接将依赖的作为参数传递,spring会自动注入 public UseTestService useTestService(TestService testService) { UseTestService service = new UseTestService(); service.setTestService(testService); return service; } }
这里是我们的核心配置,在这里我们看到了注解。
@Configuration 表示的是这个类是一个配置类
@Bean 位置是在方法上,表示配置的是一个JavaBean,并将此bean交给spring容器来管理
Configuration 这个注解比较好理解,就是说JavaConfig这个类是一个spring的配置类
Bean这个注解放到了方法上,而方法的返回值就是一个JavaBean对象,也就是说,这里声明了TestService这么一个bean到spring容器中
下面的这个bean,是由spring来管理了服务的消费方,我们知道服务消费方是依赖服务的提供方的,如何解决依赖呢,我们可以看到,首先创建了一个服务的消费方这么一个对象,然后调用set方法将服务的提供方注入,这样就完成了依赖注入。
测试代码
public class Main { public static void main(String[] args) { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(JavaConfig.class); UseTestService service = ac.getBean(UseTestService.class); System.out.println(service.sayHello("小明")); ac.close(); } }
这里就非常简单了,告诉spring配置类,然后从容器中拿到服务的消费方,调用sayHello方法。这个时候,服务的消费方就会调用服务的提供方的sayHello方法,输入我们期望的结果
相关文章推荐
- java web,从零开始,一步一步配置ssm(Spring+SpringMVC+MyBatis)框架
- [101]一步一步学懂spring - 使用Java配置的方式搭建SpringMvc
- Spring声明式事务配置上去后出现如下报错:java.lang.ClassCastException: $Proxy1解决
- Spring事务配置的五种方式 (转自 javablog)
- [原创]一步一步带你进入Java世界(一)_Java环境配置
- 基于Struts、Spring、Hibernate的JavaWeb开发SSH框架配置
- 简化Spring(1)--配置文件http://www.blogjava.net/calvin/archive/2005/08/21/10530.html
- java代码中获得spring配置文件中的bean
- 主题:Java自动重载Spring配置文件
- 定时器的实现、java定时器介绍与Spring中定时器的配置
- java 用properties文件配置spring数据源,用spring的JdbcTemplate的queryForList查数据
- 一步一步搞定JAVA环境配置
- Spring配置文件的三种方法(创建测试类Test.java)
- java spring 事务配置
- Java Servlet + Spring 配置中所遇问题以及处理
- java开源框架应用技巧之spring配置文件中如果有多个.hbm.xml文件的话,无论是项目开发过程中还是维护过程中修改起来都会很麻烦切容易出错
- 如何告诉spring初始化指定配置文件中的javabean
- 一步一步带你进入Java世界(一)_Java环境配置
- 两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz
- Java Spring 配置学习笔记