Spring @Value("#{}")和@Value("${}")

突然发现@Value("#{}") 这种用法,来总结下两者的区别

一.@Value("#{}")

    其实是SpEL表达式的值,可以表示常量的值,或者获取bean中的属性

@RestController
@RequestMapping("/login")
@Component
public class LoginController {
	
	@Value("#{1}")
	private int number; //获取数字 1
	
	@Value("#{'Spring Expression Language'}") //获取字符串常量
	private String str;
	
	@Value("#{dataSource.url}") //获取bean的属性
	private String jdbcUrl;
	
	@Autowired
	private DataSourceTransactionManager transactionManager;
 
	@RequestMapping("login")
	public String login(String name,String password) throws FileNotFoundException{
		System.out.println(number);
		System.out.println(str);
		System.out.println(jdbcUrl);
		return "login";
	}
}

二.@Value("${}")

    用于获取配置文件中的属性值,通常用于获取写在application.properties中的内容,例如在配置文件中:

jdbc.driverClass=com.mysql
jdbc.url=3306@local
jdbc.user=admin

    则在类中可以通过@Value(""${jdbc.url})来获取相应的值

你可能感兴趣的:(SpringBoot)