spring注解@Configuration,@Value,@Bean实例

来源:互联网 发布:手机网络延迟怎么解决 编辑:程序博客网 时间:2024/05/01 15:53

spring 3.0中增加了@Configuration,@Value,@Bean以下做了一个简单的例子

@Configuration:可以通过Java文件取代xml文件的Bean配置

@Value:读取xxx.properties进Java文件进行键值对的注入

@Bean:@Configuration进行实例化Bean。name:指定bean名字


@Configuration代码如下

package guoguo.spring.config;import guoguo.spring.config.impl.WorkerImpl;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class AppConfig {private @Value("#{jdbcProperties.url}") String jdbcUrl;private @Value("#{jdbcProperties.username}") String username;private @Value("#{jdbcProperties.password}") String password;@Bean(name = "worker")public Worker getWorker() {return new WorkerImpl();}//测试键值注入public String getJdbcUrl() {return jdbcUrl;}public String getUsername() {return username;}public String getPassword() {return password;}}

xml文件配置如下

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:util="http://www.springframework.org/schema/util"  xmlns:context="http://www.springframework.org/schema/context"  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"><util:properties id="jdbcProperties" location="resources/env/jdbc.properties"></util:properties><context:component-scan base-package="guoguo.spring"/></beans>

测试文件

package guoguo.spring.config;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestAppConfig {@Testpublic void setUp() throws Exception {ApplicationContext context = new ClassPathXmlApplicationContext(getContext());//设置服务对应业务的配置文件部分//AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);AppConfig appConfig = context.getBean(AppConfig.class);System.out.println("jdbcUrl [" + appConfig.getJdbcUrl() + "]");System.out.println("username [" + appConfig.getUsername() + "]");Worker worker = context.getBean("worker", Worker.class);System.out.println(worker.doWork());}public String[] getContext() {return new String[] {"classpath*:resources/context.xml"};}}

测试结果

jdbcUrl [1234123]username [1231231]this is worker impl


0 0