首页 > 代码库 > spring学习笔记

spring学习笔记

一、@Value注解

1.@Value Example

  1. #{expression?:default value}

Few examples

  1. @Value("#{systemProjecties[‘mongodb.port‘]?:27017}")
  2. private String mongodbPort;
  3. @Value("#{config[‘mongodb.url‘]?:‘127.0.0.1‘}")
  4. private String mongodbUrl;
  5. @Value("#{aBean.age ?:21}")
  6. private int age;

2.@Value And Property Example

  1. ${property:default value}

Few examples

  1. //@propertySource("classpath:/config.properties")
  2. //configuration
  3. @Value("${mongodb.url:127.0.0.1}")
  4. private String mongodbUrl;
  5. @Value("#{‘${mongodb.url:172.0.0.1}‘}")
  6. private String mongoUrl;
  7. @Value("#config[‘mongodb.url‘]?:‘127.0.0.1‘")
  8. private String mogodbUrl;
  1. config.property
  2. mogodb.url = 1.2.3.4
  3. mogodb.db = hello

For "config" bean

  1. <util:properties id="config" location="classpath:config.properties"/>

Follow up

Must register a static PropertySourcesPlaceholderConfiger bean in either XML or annotation ,so that Spring @Value konw how to interpret ${}

  1. //@PropertySource("classpath:/config.properties}")
  2. //@Configuration
  3. @Bean
  4. public static PropertySourcesPlaceholderConfigurer propertyConfigIn() {
  5. return new PropertySourcesPlaceholderConfigurer();
  6. }

我的理解:
首先是#和,什么时候用#什么时候用
@Value注解应该是识别#的,#中可以写配置在xml中的“util”属性中的id的。
{}获取了。
如果没有设置PropertySourcesPlaceholderConfiger这个类,就不要用的方式吧。
另外要注意的是,如果你使用的是$,那么表达式的规则是default value前面是不需要写?的,否则的话,需要些?

二、ModelAttribute注解

ModelAttribute可以用在方法上参数中

用在参数中的时候,用于解释model entity
我的理解是:在注解之后的Pet pet,无论参数写的是pet还是pet2,实际都对应的是model 中传过来的pet。

  1. public String processSubmit(@ModelAttribute("pet") Pet pet, BindingResult result) {
  2. }

用在方法上的时候,表示该controller的所有方法在调用前,先执行此@ModelAttribute方法。并且如果注解中传过来的参数,可以返回到view中。

  1. @ModelAttribute("accounts")
  2. public List<Account> getAccounts() {
  3. System.out.println("getAccounts");
  4. return accounts;
  5. }


来自为知笔记(Wiz)


spring学习笔记