1自定义注解
元注解
@Target:
@Retintion
source 源文件时期
runtieme:运行时期
@Documented javadoc此类工具文档化
针对我们的springmvc
@Controller 控制类注
@Target(ElementType.Type)
@Retention()
@Controller()
@Qualifier("")
@RequestMapping("")
@Service("")
<context:componet-scan base-package="">
dispatcherSerlet
中央控制器
源注解用来规范自定义注解
DispatcherServle
/**
spring mvc 项目前端控制器
web请求的如可
author
*/
public class DispatcherServlet extends HttpSERVLET{
//初始化bean 将初始化bean加入spring容器
publci void init() throws ServletExcepton{
super.inint();
//将基础包中的bean加入spring容器管理xml
String basepackageString=confgUtils.getBasepackgeName();
//自动扫描
scanBasePacage (basePackage);
}
publci class CofgUtils{
}
private void scanbasePackage(String basePackage){
DispatcherServlet.class.getClassLoader90
.getResource("/"+recompile());
private String repace.relaceALL("\\.","/");
File file=new File(pathFile);
String fileS []=file.list();
for(String path:files){
File eachFile=new File(basePackage+path);
if(eachFile.isDirecotory()){
scanbasePackage(basePackage+"."+eachFile.getName());
private String replacePath(String basePackage){
return basePackage.replaceALL("\\.","/");
}
private String replacePath(String basePackage){
return basePackage.replaceAll());
private List<String> packeName=new ArrayList<String>();
packNames.add();
scabasePackage(basePackaeg);
/**/
private void filterAndInstance(){
springIoc();
//通过映射接受的url请求判断由那个实例来处理
handlerMapper();
}
//通过handlerMaps映射方法来找对应handler累
private void handlerMaps(){
}
@RequestMapp()
@qualifier()
for(String className:package)
private
clazz.isAnntionpac
for(Map,Entry<String,Object>) {
Class clazz=Claa.forName(className.repacle(".class"));
if(clazz.isAnntiationPersent())
Object instance=clazz.gerAnntion
Sring key=controllerAnnotion();
}
注解
instanceMaps.put();
String key=sericeAnntion.value(;
Field[] filelds =entry.getValue().getClass().getDeclaredFiles();
for(Field field:fields){
Qualifier qualifier=(Qualifier)field.getAnnotiation(Qualifier.class);
String key=qualifier.value();
field.setAccessible(true);
Method
handerMap.put();
filterAndIndn(
}
<ontext:componet-sacn base-package="">
</context:componet-san>
}