org.springframework
spring-oxm
${spring.version}
org.springframework
spring-tx
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-aop
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-test
${spring.version}
org.springframework
spring-beans
${spring.version}
javax
javaee-api
7.0
jstl
jstl
1.2
org.codehaus.jackson
jackson-mapper-asl
1.9.13
commons-fileupload
commons-fileupload
1.3.1
commons-io
commons-io
2.4
commons-codec
commons-codec
1.9
${project.artifactId}
src/main/java
**/*.properties
**/*.xml
false
src/main/resources
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
http://localhost:8080/manager/text
tomcat7
true
web.xml中加上spring mvc的配置:
SpringMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-mvc.xml
1
true
SpringMVC
/
还有spring的配置文件,加上注解相关的配置:
<bean
class=“org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter”>
其余的配置可以自行设置,或者参考我上传到git上的源码;
创建配置属性的bean
本次实战的示例,以"电脑"为例,有两个属性:操作系统和内存大小,如下:
package com.bolingcavalry;
/**
-
Description:
-
@author willzhao
-
@email zq2599@gmail.com
-
@date 2017/7/1 22:15
*/
public class Computer {
/**
- 操作系统
*/
private String os;
/**
- 内存大小
*/
private int ram;
public String getOs() {
return os;
}
public void setOs(String os) {
this.os = os;
}
public int getRam() {
return ram;
}
public void setRam(int ram) {
this.ram = ram;
}
}
创建XSD文件
在工程的src\main\resources\META-INF\computer.xsd目录下创建computer.xsd文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?><xsd:schema
xmlns=“http://blog.csdn.net/boling_cavalry/schema/computer”
xmlns:xsd=“http://www.w3.org/2001/XMLSchema”
xmlns:beans=“http://www.springframework.org/schema/beans”
targetNamespace=“http://blog.csdn.net/boling_cavalry/schema/computer”
elementFormDefault=“qualified”
attributeFormDefault=“unqualified”>
<xsd:import namespace=“http://www.springframework.org/schema/beans”/>
<xsd:element name=“computer”>
xsd:complexType
xsd:complexContent
<xsd:extension base=“beans:identifiedType”>
<xsd:attribute name=“os” type=“xsd:string”/>
<xsd:attribute name=“ram” type=“xsd:int”/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
</xsd:schema>
注意xmlns和targetNamespace的内容,在外部使用时也会用到,还有就是xsd:element节点,里面对computer的两个属性做了约束;
创建自定义BeanDefinitionParser,制定配置信息的解析规则
接下来要写个BeanDefinitionParser,作用是拿到xml中的computer节点后,该如何从这个节点中取得有效的信息给spring环境,源码如下:
public class ComputerBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {
@Override
protected Class<?> getBeanClass(Element element) {
return Computer.class;
}
@Override
protected void doParse(Element element, BeanDefinitionBuilder builder) {
String os = element.getAttribute(“os”);
String ramStr = element.getAttribute(“ram”);
if(StringUtils.hasText(os)){
builder.addPropertyValue(“os”, os);
}
if(StringUtils.hasText(ramStr)){
builder.addPropertyValue(“ram”, Integer.valueOf(ramStr));
}
}
写在最后
作为一名即将求职的程序员,面对一个可能跟近些年非常不同的 2019 年,你的就业机会和风口会出现在哪里?在这种新环境下,工作应该选择大厂还是小公司?已有几年工作经验的老兵,又应该如何保持和提升自身竞争力,转被动为主动?
就目前大环境来看,跳槽成功的难度比往年高很多。一个明显的感受:今年的面试,无论一面还是二面,都很考验Java程序员的技术功底。
最近我整理了一份复习用的面试题及面试高频的考点题及技术点梳理成一份“Java经典面试问题(含答案解析).pdf和一份网上搜集的“Java程序员面试笔试真题库.pdf”(实际上比预期多花了不少精力),包含分布式架构、高可扩展、高性能、高并发、Jvm性能调优、Spring,MyBatis,Nginx源码分析,Redis,ActiveMQ、Mycat、Netty、Kafka、Mysql、Zookeeper、Tomcat、Docker、Dubbo、Nginx等多个知识点高级进阶干货!
由于篇幅有限,为了方便大家观看,这里以图片的形式给大家展示部分的目录和答案截图!
Java经典面试问题(含答案解析)
阿里巴巴技术笔试心得
序员的技术功底。**
最近我整理了一份复习用的面试题及面试高频的考点题及技术点梳理成一份“Java经典面试问题(含答案解析).pdf和一份网上搜集的“Java程序员面试笔试真题库.pdf”(实际上比预期多花了不少精力),包含分布式架构、高可扩展、高性能、高并发、Jvm性能调优、Spring,MyBatis,Nginx源码分析,Redis,ActiveMQ、Mycat、Netty、Kafka、Mysql、Zookeeper、Tomcat、Docker、Dubbo、Nginx等多个知识点高级进阶干货!
由于篇幅有限,为了方便大家观看,这里以图片的形式给大家展示部分的目录和答案截图!
[外链图片转存中…(img-NnvscyWl-1714686677603)]
Java经典面试问题(含答案解析)
[外链图片转存中…(img-WzIGpRkP-1714686677604)]
阿里巴巴技术笔试心得
[外链图片转存中…(img-PWQMfysG-1714686677604)]