Spring4中的@Value的使用(学习笔记)

来源:互联网 发布:网络大神作家经典作品 编辑:程序博客网 时间:2024/05/18 00:07

1、@Value用途介绍

Spring主要在注解@Value的参数中使用表达式
@Value的使用主要有以下几种情况
(1)注入普通字符
(2)注入操作系统属性
(3)注入表达式运算结果
(4)注入其他Bean的属性
(5)注入文件内容
(6)注入网址内容
(7)注入属性文件

2、案例编写之项目目录结构

这里写图片描述

3、pom.xml文件内容

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>com.wisely</groupId>    <artifactId>highlight_spring4</artifactId>    <version>0.0.1-SNAPSHOT</version>    <properties>        <java.version>1.8</java.version>        <spring-framework.version>4.1.5.RELEASE</spring-framework.version>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-context</artifactId>            <version>${spring-framework.version}</version>        </dependency>        <!-- spring aop支持 -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-aop</artifactId>            <version>${spring-framework.version}</version>        </dependency>        <!-- aspectj支持 -->        <dependency>            <groupId>org.aspectj</groupId>            <artifactId>aspectjrt</artifactId>            <version>1.8.6</version>        </dependency>        <dependency>            <groupId>org.aspectj</groupId>            <artifactId>aspectjweaver</artifactId>            <version>1.8.5</version>        </dependency>        <!-- Spring test 支持 -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-test</artifactId>            <version>${spring-framework.version}</version>        </dependency>        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>4.11</version>        </dependency>        <dependency>            <groupId>commons-io</groupId>            <artifactId>commons-io</artifactId>            <version>2.3</version>        </dependency>        <dependency>            <groupId>javax.annotation</groupId>            <artifactId>jsr250-api</artifactId>            <version>1.0</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-test</artifactId>            <version>${spring-framework.version}</version>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-compiler-plugin</artifactId>                <version>2.3.2</version>                <configuration>                    <source>${java.version}</source>                    <target>${java.version}</target>                </configuration>            </plugin>        </plugins>    </build></project>

4、test.txt的内容

测试文件

5、test.properties的内容

book.author=wangyunfeibook.name=spring boot

6、DemoService的内容

package com.wisely.highlight_spring4.ch2.el;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Service;@Servicepublic class DemoService {    @Value("其它类的属性")    private String another;    public String getAnother() {        return another;    }    public void setAnother(String another) {        this.another = another;    }}

7、ElConfig的内容

package com.wisely.highlight_spring4.ch2.el;import org.apache.commons.io.IOUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;import org.springframework.core.env.Environment;import org.springframework.core.io.Resource;@Configuration@ComponentScan("com.wisely.highlight_spring4.ch2.el")@PropertySource("classpath:test.properties")public class ElConfig {    @Value("I Love You!") //1    private String normal;    @Value("#{systemProperties['os.name']}") //2    private String osName;    @Value("#{ T(java.lang.Math).random() * 100.0 }") //3    private double randomNumber;    @Value("#{demoService.another}") //4    private String fromAnother;    @Value("classpath:test.txt") //5    private Resource testFile;    @Value("http://www.baidu.com") //6    private Resource testUrl;    @Value("${book.name}") //7    private String bookName;    @Autowired    private Environment environment; //7    @Bean //7    public static PropertySourcesPlaceholderConfigurer propertyConfigure() {        return new PropertySourcesPlaceholderConfigurer();    }    public void outputResource() {        try {            System.out.println(normal);            System.out.println(osName);            System.out.println(randomNumber);            System.out.println(fromAnother);            System.out.println(IOUtils.toString(testFile.getInputStream()));            System.out.println(IOUtils.toString(testUrl.getInputStream()));            System.out.println(bookName);            System.out.println(environment.getProperty("book.author"));        } catch (Exception e) {            e.printStackTrace();        }    }}

8、Main的内容

package com.wisely.highlight_spring4.ch2.el;import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class Main {    public static void main(String[] args) {        AnnotationConfigApplicationContext context =                new AnnotationConfigApplicationContext(ElConfig.class);        ElConfig resourceService = context.getBean(ElConfig.class);        resourceService.outputResource();        context.close();    }}

9、最终运行的结果

这里写图片描述