关于做公司官方网站域名申请wordpress 投稿主题

当前位置: 首页 > news >正文

关于做公司官方网站域名申请,wordpress 投稿主题,cn后缀做网站,wordpress 添加搜索#x1f600;前言 自己实现 SpringMVC 底层机制 系列之-实现任务阶段 5- 完成 Spring 容器对象的自动装配 -Autowried #x1f3e0;个人主页#xff1a;尘觉主页
#x1f9d1;个人简介#xff1a;大家好#xff0c;我是尘觉#xff0c;希望我的文章可以帮助到大家前言 自己实现 SpringMVC 底层机制 系列之-实现任务阶段 5- 完成 Spring 容器对象的自动装配 -Autowried 个人主页尘觉主页
个人简介大家好我是尘觉希望我的文章可以帮助到大家您的满意是我的动力 在csdn获奖荣誉: csdn城市之星2名 ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ Java全栈群星计划top前5 ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣  端午大礼包获得者 欢迎大家这里是CSDN我总结知识的地方欢迎来到我的博客感谢大家的观看 如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦 文章目录 实现任务阶段 5- 完成 Spring 容器对象的自动装配 -Autowried分析示意图代码实现创建自定义注解AutoWired修改MonsterController修改WyxWebApplicationContextexecuteAutoWired();方法调用启动 Tomcat, 完成测试 总结 实现任务阶段 5- 完成 Spring 容器对象的自动装配 -Autowried 说明: 完成 Spring 容器中对象的注入/自动装配 分析示意图 - 浏览器输入 http://localhost:8080/monster/list, 返回列表信息 ● 代码实现, 说明整个实现思路就是参考 SpringMVC 规范 代码实现 创建自定义注解AutoWired Target(ElementType.FIELD) Retention(RetentionPolicy.RUNTIME) Documented public interface AutoWired {String value() default ; }修改MonsterController public class MonsterController {//AutoWired表示要完成属性的装配.AutoWiredprivate MonsterService monsterService;//编写方法,可以列出妖怪列表//springmvc 是支持原生的servlet api, 为了看到底层机制//这里我们设计两个参数RequestMapping(value /monster/list)public void listMonster(HttpServletRequest request,HttpServletResponse response) {//设置编码和返回类型response.setContentType(text/html;charsetutf-8);StringBuilder content new StringBuilder(h1妖怪列表信息/h1);//调用monsterServiceListMonster monsters monsterService.listMonster();content.append(table border1px width500px styleborder-collapse:collapse);for (Monster monster : monsters) {content.append(trtd monster.getId() /tdtd monster.getName() /tdtd monster.getSkill() /tdtd monster.getAge() /td/tr);}content.append(/table);//获取writer返回信息try {PrintWriter printWriter response.getWriter();printWriter.write(content.toString());} catch (IOException e) {e.printStackTrace();}}修改WyxWebApplicationContext public class WyxWebApplicationContext {//定义属性classFullPathList, 保存扫描包/子包的类的全路径private ListString classFullPathList new ArrayList();//定义属性ioc, 存放反射生成的Bean对象 /Controller/Servicepublic ConcurrentHashMapString, Object ioc new ConcurrentHashMap();//无参构造器public WyxWebApplicationContext() {}private String configLocation;//属性,表示spring容器配置文件public WyxWebApplicationContext(String configLocation) {this.configLocation configLocation;}//编写方法,完成自己的spring容器的初始化public void init() {//这里是写的固定的spring容器配置文件.?做活//String basePackage XMLParser.getBasePackage(wyxspringmvc.xml);String basePackage XMLParser.getBasePackage(configLocation.split(:)[1]);//这时basePackage com.hspedu.controller,com.wyxdu.serviceString[] basePackages basePackage.split(,);//遍历basePackages, 进行扫描if (basePackages.length 0) {for (String pack : basePackages) {scanPackage(pack);//扫描}}System.out.println(扫描后的 classFullPathList classFullPathList);//将扫描到的类, 反射到ico容器executeInstance();System.out.println(扫描后的 ioc容器 ioc);//完成注入的bean对象,的属性的装配executeAutoWired();System.out.println(装配后 ioc容器 ioc);} }executeAutoWired();方法调用 public void executeAutoWired() {//判断ioc有没有要装配的对象if (ioc.isEmpty()) {return; //你也可以抛出异常 throw new RuntimeException(ioc 容器没有bean对象)}//遍历ioc容器中的所有注入的bean对象, 然后获取到bean的所有字段/属性判断是否需要//装配/*** entry String,Object String 就是你注入对象时名称 Object就是bean对象*/for (Map.EntryString, Object entry : ioc.entrySet()) {//String key entry.getKey();Object bean entry.getValue();//得到bean的所有字段/属性Field[] declaredFields bean.getClass().getDeclaredFields();for (Field declaredField : declaredFields) {//判断当前这个字段是否有AutoWiredif (declaredField.isAnnotationPresent(AutoWired.class)) {//有AutoWired//的当前这个字段的AutoWiredAutoWired autoWiredAnnotation declaredField.getAnnotation(AutoWired.class);String beanName autoWiredAnnotation.value();if (.equals(beanName)) {//如果没有设置value,按照默认规则//即得到字段类型的名称的首字母小写作为名字来进行装配Class? type declaredField.getType();beanName type.getSimpleName().substring(0, 1).toLowerCase() type.getSimpleName().substring(1);}//如果设置value, 直接按照beanName来进行装配//从ioc容器中获取到beanif (null ioc.get(beanName)) {//说明你指定的名字对应的bean不在ioc容器throw new RuntimeException(ioc容器中, 不存在你要装配的bean);}//防止属性是private, 我们需要暴力破解declaredField.setAccessible(true);//可以装配属性try {declaredField.set(bean, ioc.get(beanName));} catch (Exception e) {e.printStackTrace();}}}}}启动 Tomcat, 完成测试 浏览器输入 http://localhost:8080/monster/list 总结 本文完成了实现任务阶段 5- 完成 Spring 容器对象的自动装配 -Autowried 下面就是 实现任务阶段 6- 完成控制器方法获取参数-RequestParam                                               自己实现 SpringMVC 底层机制 核心分发 控制器 Controller 和 Service 注入容器 对象自动装配 控制器 方法获取参数 视图解析 返回 JSON 格式数系列 第一篇-自己实现 SpringMVC 底层机制 系列之搭建 SpringMVC 底层机制开发环境和开发 WyxDispatcherServlet_springmvc分发器 第二篇-自己实现 SpringMVC 底层机制 系列之–实现任务阶段 2- 完成客户端浏览器可以请求控制层 第三篇-自己实现 SpringMVC 底层机制 系列之–实现任务阶段 3- 从 web.xml动态获取 wyxspringmvc.xml 第四篇- 自己实现 SpringMVC 底层机制 系列之-实现任务阶段 4- 完成自定义Service 注解功能                                               热门专栏推荐 想学习vue的可以看看这个
java基础合集
数据库合集
redis合集
nginx合集 linux合集 等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持 欢迎大家加入我的社区 尘觉社区 文章到这里就结束了如果有什么疑问的地方请指出诸佬们一起来评论区一起讨论 希望能和诸佬们一起努力今后我们一起观看感谢您的阅读 如果帮助到您不妨3连支持一下创造不易您们的支持是我的动力