详解Spring注解驱动开发之属性赋值

一、@Value注解

Person的属性上使用@Value注解指定注入值

public class Person {

    @Value("#{20-2}")     //SpEL表达式 #{}
    private Integer id;

    @Value("张三")        //基本数据类型
    private String name;
}

配置类

@Configuration
public class MainConfigOfPropertyValues {

    @Bean
    public Person person(){
        return new Person();
    }
}

测试

 @Test
    public void testValues(){
        ApplicationContext context = new AnnotationConfigApplicationContext(MainConfigOfPropertyValues.class);

        String[] beanDefinitionNames = context.getBeanDefinitionNames();

        for (String beanName : beanDefinitionNames){
            System.out.println(beanName);
        }

        Person person = (Person) context.getBean("person");

        System.out.println(person);
    }

输出结果:

二、@PropertySource加载外部配置文件

配置类加上@PropertySource注解,引入外部配置文件

@PropertySource({"classpath:/person.properties"})
@Configuration
public class MainConfigOfPropertyValues {

    @Bean
    public Person person(){
        return new Person();
    }
}

使用${属性值}注入属性值

public class Person {

    @Value("#{20-2}")     //SpEL表达式 #{}
    private Integer id;

    @Value("张三")        //基本数据类型
    private String name;

    @Value("${person.age}")     //使用外部配置文件注入属性值
    private Integer age;
}

输出结果:

因为配置文件中的值默认都加载到环境变量中,所有还可以通过环境变量来获取配置文件中的值

 @Test
    public void testValues(){
        ApplicationContext context = new AnnotationConfigApplicationContext(MainConfigOfPropertyValues.class);

        String[] beanDefinitionNames = context.getBeanDefinitionNames();

        for (String beanName : beanDefinitionNames){
            System.out.println(beanName);
        }

        Person person = (Person) context.getBean("person");

        System.out.println(person);

        Environment environment = context.getEnvironment();

        String age = environment.getProperty("person.age");
        System.out.println("age = " + age);

    }

输出结果:

到此这篇关于详解Spring注解驱动开发实现属性赋值的文章就介绍到这了,更多相关Spring注解驱动开发内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • @SpringBootApplication注解的使用

    一.前言 大部分的配置都可以用Java类+注解来代替,而在SpringBoot项目中见的最多的莫过于@SpringBootApplication注解了,它在每个SpringBoot的启动类上都有标注. 这个注解对SpringBoot的启动和自动配置到底有什么样的影响呢?本文将为各位大佬解析它的源码,揭开@SpringBootApplication注解神秘的面纱. 二.正文 对SpringBoot工程的自动配置很感兴趣,于是学习其源码并整理了其中一些内容,如果有错误请大家指正~话不多说,直接上源码

  • Spring事务注解@Transactional失效的八种场景分析

    首先说一下最近自己遇到的一个坑: @Transactional service A(){ try{ insert(); serviceB.update(); }catch(){ throw new RunTimeException(); } } serviceB(){ @Transactional update(){ try{ mapperB.update(); }catch(){ throw new RunTimeException(); } } } mapperB (){ try{ //do

  • Spring注解实现Bean自动装配示例详解

    何为自动装配 自动装配是 Spring 满足 bean 依赖的一种方式. 在使用 Spring 配置 bean 时,我们都要给配置的 bean 的属性设置一个值,如果不手动设置则都是空.而自动的好处就在于,我们不用手动去设置一个值,spring 会在上下文中自动寻找并装配合适的值. 本文主要介绍了Spring注解Bean自动装配的相关内容,下面话不多少了,来一起看看详细的介绍吧 使用须知: 1.导入约束:context约束 2.配置注解的支持: context:annotation-config

  • Spring注解驱动开发实现属性赋值

    前言 在实际开发当中,Spring中bean的属性直接赋值用的不是太多,整理这方面的资料,做一个小结,以备后续更深入的学习. 通过配置文件的方式 以配置文件的方式启动spring容器时,可以使用property标签的value给bean的属性赋值,赋值的形式有以下几种: <--通过context:property-placeholder将properties文件中的值加载的环境变量中(properties中的属性值最终是以环境变量的形式存储的)> <context:property-pl

  • Spring注解解析之@ImportResource

    一.ImportResource 1.1 定义包和类 首先定义一个不会被ComponentScan扫描到的包outpackage,如下: 在该包内创建一个类: package outpackage; import org.springframework.stereotype.Service; @Service public class HelloService1 { public void method1() { System.out.println("class:HelloService1__

  • SpringMVC结构简介及常用注解汇总

    MVC结构简介 Model(模型):数据模型,提供要展示的数据,因此包含数据和行为.现在一般分离为数据层Dao和服务层Service,提供了模型数据查询和模型数据的状态更新等功能. View(视图):负责进行模型的展示,一般指用户界面. Controller(控制器):接受用户请求,并委托模型进行处理(状态改变),处理完返回模型数据给视图,交由视图进行展示. SpringMVC简介 SpringMVC是SpringFramework的一部分,是Java实现MVC的轻量级Web框架. Spring

  • Spring-IOC容器中的常用注解与使用方法详解

    Spring是什么? Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题.它是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发Java应用程序提供全面的基础架构支持.Spring负责基础架构,因此Java开发者可以专注于应用程序的开发. 体系结构 核心容器(Core Container):Spring的核心容器是其他模块建立的基础,有Spring-core.Spring

  • SpringBoot自定义注解实现Token校验的方法

    1.定义Token的注解,需要Token校验的接口,方法上加上此注解 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @Target(ElementTyp

  • Spring中的注解之@Override和@Autowired

    一.Override 首先,@Override 注解是伪代码,表示子类重写父类的方法.这个注解不写也是可以的,但是写了有如下好处: 1. 可以当注释用,方便阅读(注解很重要的一个作用就是注释): 2. 编译器和 IDE 可以验证 @Override 下面的方法名是否是父类中所有的,如果没有的话就会报错.如果没有加 @Override ,而子类中的方法名又写错了,这个时候编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法. 下面来验证一下,首先有一个 IPay 的父类,包含一

  • 详解Spring注解驱动开发之属性赋值

    一.@Value注解 在Person的属性上使用@Value注解指定注入值 public class Person { @Value("#{20-2}") //SpEL表达式 #{} private Integer id; @Value("张三") //基本数据类型 private String name; } 配置类 @Configuration public class MainConfigOfPropertyValues { @Bean public Pers

  • 详解Spring注解 @Configuration

    目录 @Configuration 注解的概述 底层原理 与 Spring IoC 容器的集成 Bean 的定义和装配的实现 条件化配置的实现 配置类的加载和实例化过程 总结 Spring 提供了丰富的特性和功能,包括依赖注入.面向切面编程.事务管理.数据访问.Web应用程序开发等.其中,@Configuration 是 Spring 中的一个注解,它用于标记一个类为配置类,通过配置类可以定义和组装 Spring Bean,并且支持高度灵活的配置方式.在本文中,我们将深入探讨 @Configur

  • 详解 Spring注解的(List&Map)特殊注入功能

    详解 Spring注解的(List&Map)特殊注入功能 最近接手一个新项目,已经没有原开发人员维护了.项目框架是基于spring boot进行开发.其中有两处Spring的注解花费了大量的时间才弄明白到底是怎么用的,这也涉及到spring注解的一个特殊的注入功能. 首先,看到代码中有直接注入一个List和一个Map的.示例代码如下: @Autowired private List<DemoService> demoServices; @Autowired private Map<

  • 详解Spring注解--@Autowired、@Resource和@Service

    什么是注解 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件,那么.xml文件又会非常多.总之这将导致配置文件的可读性与可维护性变得很低 2.在开发中在.java文件和.xml文件之间不断切换,是一件麻烦的事,同时这种思维上的不连贯也会降低开发的效率 为了解决这两个问题,Spring引入了注解,通过"@XXX"的方式,让注解与Java

  • 详解Spring boot+CXF开发WebService Demo

    最近工作中需要用到webservice,而且结合spring boot进行开发,参照了一些网上的资料,配置过程中出现的了一些问题,于是写了这篇博客,记录一下我这次spring boot+cxf开发的webservice的配置过程,仅供参考. 一.本次开发除了用到spring boot基础jar包外,还用到了cxf相关jar包: <!-- cxf支持 --> <dependency> <groupId>org.apache.cxf</groupId> <

  • 详解spring注解式参数校验

    一般入参我们都会转为vo对象.那么直接在对象的属性上注解即可. 其实spring用的是hibernate的validator. 步骤 1.配置spring.xml <mvc:annotation-driven /> 2.配置自己的validate类. <bean id="validateArgsAOP" class="com.my.validate.aop.ValidateArgsAOP"/> <aop:config> <a

  • 详解spring注解配置启动过程

    最近看起spring源码,突然想知道没有web.xml的配置,spring是怎么通过一个继承于AbstractAnnotationConfigDispatcherServletInitializer的类来启动自己的.鉴于能力有限以及第一次看源码和发博客,不到之处请望谅~ 我用的IDE是IntelliJ IDEA,这个比myEclipse看源码方便一点,而且黑色背景挺喜欢.然后项目是在maven下的tomcat7插件运行.spring版本是4.3.2.RELEASE. 如果写过纯注解配置的spri

  • 详解Spring 注解之@Import 注入的各种花活

    今天来分享一下 pig4cloud 中涉及的 @Import 的注入形式.通过不同形式的注入方式,最大程度使得架构简洁. @Import导入一个组件 来看 EnablePigxDynamicRoute 这个注解,当我们需要开始动态数据源时,只需要在main 方法加上此注解即可. @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @Import(DynamicRouteAut

  • 详解spring如何使用注解开发

    在Spring4之后,要使用注解开发,必须要保证aop的包导入了. 使用注解需要导入context约束,增加注解的支持. <?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance

随机推荐