在这之前的教程中,都是使用xml文件(即bean配置文件)来对bean进行声明的,但是在sPRing 3.0版本以及后续更新的版本中,提供了javaConfig的方式(即注解)来声明bean。 例如:
@Configurationpublic class AppConfig { @Bean(name="helloBean") public HelloWorld helloWorld() { return new HelloWorldImpl(); }}等效于下面的xml方式:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="helloBean" class="com.yiibai.hello.impl.HelloWorldImpl"></beans>例子1:使用@Configuration 和 @Bean(name=”name”)来声明bean
第一步:创建bean HelloWorld.java
package com.main.autowrite.javaconfig;public class HelloWorld { public void sayHello(){ System.out.println("hello spring"); }}HelloWorldConfig.java
package com.main.autowrite.javaconfig;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class HelloWorldConfig { @Bean(name="hello") public HelloWorld getHelloWorld(){ return new HelloWorld(); }}运行代码以及结果
注意:这次是使用AnnotationConfigapplicationContext 类获取spring容器
@Test public void test(){ AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(HelloWorldConfig.class); HelloWorld helloWorld = (HelloWorld)context.getBean("hello"); helloWorld.sayHello(); }结果如下:
例子2:使用@import导入多个bean
目录结构如下:
在例子1的基础上,增加以下三个类
Output.java
package com.main.autowrite.javaconfig;public class Output { public void outPut(){ System.out.println("This is a out put demo"); }}OutputConfig.java
package com.main.autowrite.javaconfig;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class OutputConfig { @Bean(name="output") public Output getOutput(){ return new Output(); }}AppConfig .java
package com.main.autowrite.javaconfig;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Import;@Configuration@Import({ HelloWorldConfig.class, OutputConfig.class })public class AppConfig {}测试方法和结果:
@Test public void test(){ AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); HelloWorld helloWorld = (HelloWorld)context.getBean("hello"); helloWorld.sayHello(); Output output = (Output)context.getBean("output"); output.outPut(); }结果:
新闻热点
疑难解答