Spring 框架零碎知识点

1. classpath 和 classpath*

classpath 和 classpath* 区别:
classpath:只会到你指定的class路径中查找找文件;
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找。

2. 注解@Autowired和@Resource的区别

@Autowired 与@Resource区别:
1、@Autowired与@Resource都可以用来装配bean,都可以写在字段或setter方法上。
2、@Resource 是JDK提供的注解,默认按照名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名,按照名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是如果name属性一旦指定,就只会按照名称进行装配。
3、@Autowired默认按类型装配(Spring提供的注解),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ;如果想使用名称装配可以结合@Qualifier注解进行使用,如下:
@Autowired
@Qualifier(“baseDao”)
private BaseDao baseDao;

3. Ant风格

ANT通配符有三种:

通配符 说明
? 匹配任何单字符
* 匹配0或者任意数量的字符
** 匹配0或者更多的目录

举例:

URL路径 说明
/project/*.a 匹配项目根路径下所有在project路径下的.a文件
/project/p?ttern 匹配项目根路径下 /project/pattern 和 /app/pXttern
/**/example 匹配项目根路径下 /project/example, /project/foow/example, 和 /example
/project/**/dir/file.* 匹配项目根路径下/project/dir/file.jsp, /project/foow/dir/file.html,/project/foow/bar/dir/file.pdf
/**/*.jsp 匹配项目根路径下任何的.jsp 文件

最长匹配原则(has more characters)
现有URL请求/app/dir/file.jsp,假设存在两个路径匹配模式/**/*.jsp/app/dir/*.jsp,那么会根据模式/app/dir/*.jsp来匹配。

4. SpringMVC @Response 返回String中文乱码

项目开发中如果没有遇到乱码,那你可能不是一个真正的开发;遇到乱码,总是习惯性去网上乱搜一气,实际上乱码的根源会有很多种情况,现象也不一样。这方面,目前菜逼的我也是乱搜一气,先排除一些不靠谱的解决方案,然后去尝试那些有理有据,适合自己项目情况的解决方案,假如成功,就了事,也没有时间和激情去追本溯源(需要改正),不行就换一种解决方法;
另,关于乱码,建议多度几遍《深入分析Java Web技术内幕》书籍的第三章:深入分析Java Web中的中文编码问题。
现在遇到的一种情况是,spring web响应乱码。一种可行的解决方法:
在springMVC的配置文件中(springMVC-xx.xml),修改<mvc:annotation-driven/>为:

<mvc:annotation-driven>
    <mvc:message-converters register-defaults="true">
        <bean class="org.springframework.http.converter.StringHttpMessageConverter">
            <constructor-arg value="UTF-8" />
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

乱码原因:org.springframework.http.converter.StringHttpMessageConverter有个final修饰的Charset DEFAULT_CHARSET=Charset.forName(“ISO-8859-1”)常量。即当返回类型为String时,返回类型为text/plain,字符被设置为默认字符ISO-8859-1。

猜你喜欢

转载自blog.csdn.net/lonelymanontheway/article/details/80716807