首页 > 学院 > 开发设计 > 正文

@Value初使用小记

2019-11-10 19:51:07
字体:
来源:转载
供稿:网友
1、@Value是SPRing内部用来读取properties配置文件内容的注解2、详细使用过程1)创建.properties文件config.properties
test.name=${name}userPageSize=5test.abc=abc2)配置文件中将.properties文件引入i.引入context的Schema命名空间,配置文件中应包含<context:annocation-config />标签用于使系统可以识别各种注解,但由于自动扫描compoent标签中已经自动注入了以上功能,所以只要<context:component-scan/>标签即可实现,无需再添加。命名空间引入:
<?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:p="http://www.springframework.org/schema/p"	xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop" 	xmlns:task="http://www.springframework.org/schema/task" 	xmlns:util="http://www.springframework.org/schema/util"	xsi:schemaLocation="		http://www.springframework.org/schema/beans		http://www.springframework.org/schema/beans/spring-beans-3.2.xsd		http://www.springframework.org/schema/util   		http://www.springframework.org/schema/util/spring-util-3.2.xsd		http://www.springframework.org/schema/context		http://www.springframework.org/schema/context/spring-context-3.2.xsd		http://www.springframework.org/schema/mvc		http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd		http://www.springframework.org/schema/tx        	http://www.springframework.org/schema/tx/spring-tx-3.2.xsd		http://www.springframework.org/schema/task  		http://www.springframework.org/schema/task/spring-task-3.2.xsd		http://www.springframework.org/schema/aop  		http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">ii、配置文件的引入多个文件同时引入:
<bean id="propertyConfig"         	 class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">         <property name="locations">                 <list>                    <value>classpath:jdbc.properties</value>                     <value>classpath:config.properties</value>                 </list>            </property>        </bean> 单个文件引入:
<bean id="propertyConfigurer"         	 class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">          <property name="location" value="classpath:jdbc.properties" />      </bean>注意:在使用springmvc时,实际上是两个Spring容器,dispatcher-servlet.xml是一个,我们的cotroller在这里;applicationContext.xml是另外一个,数据源以及数据库配置在这里。在service中可以拿到@Value值是因为通常我们将获取属性文件引入在applicationContext.xml中,这样在Controller中是取不到的,故必须在dispatcher-servlet.xml中把属性文件再定义一下。3)使用@Value注解i: $用法
@Controller@RequestMapping("/user")public class UserController {	@Resource(name = "userServiceImpl")	private UserServiceImpl userService;		@Resource(name="userTest")	private UserTest userTest;		@Value("${test.abc}")	private String testabc;	@Value("${userPageSize}")	private String userPageSize;ii:#的用法
@Component	public class User {	private static final long serialVersionUID = 952204796252534860L;	private int id;	private String name;	private String passWord;	private String nickname = null;	private Date time = null;	private String action = null;	private String token;//生成的访问凭证token	private int status;   //1 有效 0 测试用户  -1删除//	private List<Role> roles = new ArrayList<Role>();	@Value("${userPageSize}")	private String userPageSize;			public String getUserPageSize() {		return userPageSize;	}	public void setUserPageSize(String userPageSize) {		this.userPageSize = userPageSize;	}
@Controller	//@PropertySource("classpath:config.properties")	@RequestMapping("/user")	public class UserController {	@Resource(name = "userServiceImpl")	private UserServiceImpl userService;		@Resource(name="userTest")	private UserTest userTest;		@Value("${test.abc}")	private String testabc;	@Value("#{user.userPageSize}")	private String testabc2;		@Value("${userPageSize}")	private String userPageSize;注意:实体类上必须有注解标注@Component可以泛指各种组件,才可生效————————————————————————————————————————————————读取pom文件配置参数:1、pom参数配置:
<profiles>  	<profile>  		<id>local</id>	  		<properties>	  			<name>xinrui</name>	  			<db_url>jdbc:MySQL://220.181.29.165:3306/video?useUnicode=true&characterEncoding=UTF8&autoReconnect=true</db_url>//注意xml中不识别&要用转译符号&	  			<db_username>123</db_username>	  			<db_password>123</db_password>				<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>	  		</properties>  	</profile>  </profiles><build>    <finalName>storm</finalName>
<!-- 指定的动态配置文件目录 -->	 <resources>             <resource>                 <directory>src/main/resources</directory>                 <includes>                     <include>**/*.properties</include>                 </includes>                 <filtering>true</filtering>             </resource>     </resources>  </build>2、properties参数配置
driver=com.mysql.jdbc.Driverurl=${db_url}username=${db_username}password=${db_password}3、maven clean,编译运行——————————————————————————————————————1、maven加载时候的文件可以查看properties文件是否已经加载参数,注意清clean缓存 这是文件路径:2、在maven的pom.xml文件中,<properties>用于定义全局变量,在pom中通过${property_name}的形式引用变量的值。pom 的全局变量可以分为以下几种:a、系统shell的环境变量env.property_name,如${env.PATH}表示当前引用该系统的PATH变量值,PATH必须大写b、java System Properties即Java属性文件,如${java.home}c、project.property_name,直接引用POM中的元素值,如${project.version}表示引用<propject><version>1.0</version></project>中的1.0d、settings.property_name,直接引用setting.xml中的元素值,如${settings.offline}表示引用<setting><offline>false</offline></setting>中的falsee、property_name,直接访问<properties>中已经定义的变量值,如${myVar}表示引用<properties><myVar>myvalue</myVar></properties>中的myvalue3、使用Maven编译项目遇到——“maven编码gbk的不可映射字符”解决办法:
<!-- 指明编译源代码时使用的字符编码,maven编译的时候默认使用的GBK编码, 通过project.build.sourceEncoding属性设置字符编码,告诉maven这个项目使用UTF-8来编译 -->      <properties>           <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>       </properties> 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表