发表于: 2017-10-09 18:55:49
1 854
今天完成:
看了一天服务器之类的东西,思考如何把rest格式的数据转换成能操作数据库的参数。发现什么都看不懂后就去看spring基础,先学好基础应该会好很多。
知道了spring bean运行的方式,在用配置文件配置的情况下,配置文件是为了给使用spring的类进行数据装配,<bean id="cai" class="location of theclass">,其中id是随意取的,是配置文件中别的bean引用时的标志,class为"路径.类名",就是主函数加载配置文件,然后在这些bean下的property就是装配的参数了,<property name="brand" value="toyota">,其中name为类下的变量名,value就是赋值的值,这样在主函数中加载这个配置文件后再getbean就可以使用这一系列类,一般数据都是用户提交到数据库或者数据库导出来,所以value都不是固定值而是value="${变量名}",如果是需要导入其他文件的话,需要声明classpath,所有的classpath通过一个bean来存放,org。springframework........什么的那一长串就能找到这个专门用于配置spring各种的类,至于location之外的还没看过,其中name="locations"定义了这个property的属性,然后看到了array就知道这个能放很多个value,value里放路径就行了。
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations"> <!-- PropertyPlaceholderConfigurer类中有个locations属性,接收的是一个数组,即我们可以在下面配好多个properties文件 -->
<array>
<value>classpath:conpool.properties</value>
</array>
</property>
</bean>
如果在类里用了@Autowired就不需要在配置文件在单独写类的bean了,只需要写一个引用Autowiredannotationbeanpostprocessor的bean,他会自动装载,如果遇到了没有匹配或者多个匹配数据时就会抛出异常,如果在找不到匹配的但又不希望报错就在@Autowired后加上(required = false),我认为这个最好还是在setter上放,因为没有匹配的函数本就该报错。在有多个匹配的时候就在传入参数的时候假如@Qualifier("beanid"),这样autowired就会从类的类型匹配改为id匹配。
在定义类之前写上@Component就可以把这个类注释成bean,这样就不需要在配置文件里写了。
@Scope("类型")可以指定bean的作用范围,以下列举
1.singleton为单一实例,所有引用这个bean时都产生单一实例,生命周期从容器启动实例化开始到容器销毁或退出结束。
2.prototype下每次都声称一个新对象给请求方。之后和spring容器无关。
3.request通常和XmlWebApplicationContext共同使用,context会为每个http请求创建一个全新的RequestPrecessor对象,请求结束后该对象就生命周期结束。
4session通常是用户的登录信息,spring会为每个独立的session创建属于自己的全新UserPreferences实例
5.global session只能应用于基于porlet的web应用程序才有意义,是映射到porlet的global范围的session,如果普通的web应用使用了这个,容器会把它当作普通session的scope。
明日计划:
看书,学习spring基础。
遇到困难:
网上的那些解决方案在尝试之前还不知对错,看懂步骤后再复制尝试的时候又不能运行,时间就浪费了,今天也浪费了不知道多久在这上面,到了晚上才发现书上有写rest什么的,然后越看越迷茫,主要是对spring的理解太浅,就像任务一的东西只是能写出来,至于实际步骤想不明白,在没有个基本概念的时候就没有方向,看着几条步骤不知道要干什么,网上的东西有可能是错的也可能是我没写好。今天确实是没做到什么出来,所以关于代码的写不出来。
进度:
任务二知识积累。
评论