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

用路由侠做网站建设通app免费版

用路由侠做网站,建设通app免费版,东莞教育网官网,wordpress 登录 手机版#x1f387;个人主页 #x1f387;所属专栏#xff1a;Spring #x1f387;欢迎点赞收藏加关注哦#xff01; IoC 简介 IoC 全称 Inversion of Control#xff0c;即控制反转 控制反转是指控制权反转#xff1a;获得依赖对象的过程被反转了 传统开发模式中… 个人主页 所属专栏Spring 欢迎点赞收藏加关注哦   IoC 简介 IoC 全称 Inversion of Control即控制反转 控制反转是指控制权反转获得依赖对象的过程被反转了 传统开发模式中需要某个对象时我们要自己通过 new 来创建对象, 现在无需自行创建, 而是把创建对象的任务交给容器, 程序中只需依赖注入 (Dependency Injection, 简称 DI) 就可以了。这个容器称为 IoC 容器 Spring 是一个 IoC 容器, 所以 Spring 有时也被称为 Spring 容器。作为容器, 它具备两个最基础的功能存和取 Spring 容器管理的对象我们称为 Bean 。我们把 Bean 交给 Spring 管理, 由它负责对象的创建和销毁。我们的程序只需告诉 Spring哪些需要存, 以及如何从 Spring 中取出对象 Bean 的存储 有两类注解类型可以实现存储 类注解Controller、Service、Repository、Component、Configuration 方法注解Bean Controller 控制器存储 Controller // 将对象存储到 Spring 中 public class UserController { public void Hello(){System.out.println(Hello UserController); } } 要确认对象是否已经存到 Spring 容器中我们可以试试能否从 Spring 中取出 Bean那就得先得到 Spring 的上下文即 ApplicationContext SpringBootApplication public class SpringIoCDemoApplication {public static void main(String[] args) {//获取 Spring 上下文对象ApplicationContext context SpringApplication.run(SpringIoCDemoApplication.class, args);//从上下文中获取 BeanUserController userController context.getBean(UserController.class);//使用 BeanuserController.Hello();} } 观察运行结果 如果把 Controller 去掉的话运行时会抛异常 这个异常意思是说没有找到你要的 Bean说明去掉注解后就没有 UserController 类的实例说明没存进 Spring 上面代码是根据类型查找对象 ApplicationContext 也提供了其他获取 bean 的方式, ApplicationContext 获取 bean 对象的功能, 是父类 BeanFactory 提供的功能  public interface BeanFactory {Object getBean(String name) throws BeansException;T T getBean(String name, ClassT requiredType) throws BeansException;Object getBean(String name, Object... args) throws BeansException;T T getBean(ClassT requiredType) throws BeansException;T T getBean(ClassT requiredType, Object... args) throws BeansException;//其他成员方法已省略 } 常用的是第 1、2、4 种这三种方式获取到的bean是一样的。其中第一、二种根据名称获取对象。Spring 会给每个对象起一个名字, 根据 Bean 的名称(BeanId)就可以获取到对应的对象 命名规则 默认情况下是类名的小驼峰表示。如果类名的前两位均为大写那么 Bean 的名称就是类名本身 举个例子 类名UserController Bean 名称为userController 类名: UController Bean的名称为: UController SpringBootApplication public class SpringIoCDemoApplication {public static void main(String[] args) {//获取 Spring 上下文对象ApplicationContext context SpringApplication.run(SpringIoCDemoApplication.class, args);UserController userController1 context.getBean(UserController.class);UserController userController2 (UserController) context.getBean(userController);UserController userController3 context.getBean(UserController.class,userController);System.out.println(userController1);System.out.println(userController2);System.out.println(userController3);} } 运行后发现地址都是一样的说明是同一个对象 Service服务存储 直接把上述代码的 Controller 改为 Service Service public class UserController {public void Hello() {System.out.println(Hello UserController);} } 观察运行结果发现成功从 Spring 中获取到 UserService 对象, 并执行 UserService 的 Hello 方法 同理换成 Repository仓库存储、Component组件存储、Configuration配置存储还是可以得到一样的结果。这样看来的话这些注解的作用是差不多的那还为什么要弄这么多类注解 类注解的分类 这个也是和我们前面讲的应用分层相呼应。目的是让程序员看到类注解之后就能直接了解当前类的用途类注解的用途如下 Controller控制层, 接收请求, 处理请求并响应 Servie业务逻辑层, 处理具体的业务逻辑 Repository数据访问层也称为持久层负责数据访问操作 Configuration配置层. 处理项目中的一些配置信息 程序应用分层的调用流程如下 观察 Controller / Service / Repository / Configuration 等注解的源码可以发现这些注解里面都有 Component Component 是一个元注解可以注解其他类注解。如 Controller、Service、Repository 等. 这些注解称为 Component 的衍生注解 Controller , Service 和 Repository 用于更具体的用例这三个分别在控制层, 业务逻辑层, 持久化层 方法注解 Bean 方法注解 Bean 要配合类注解才能将对象存储到 Spring 容器中 Componen public class BeanConfig { Bean public User user(){ User user new User(); user.setName(zhangsan); user.setAge(18); return user; } }SpringBootApplication public class SpringIocDemoApplication { public static void main(String[] args) { //获取Spring上下⽂对象 ApplicationContext context SpringApplication.run(SpringIocDemoApplicatio //从Spring上下⽂中获取对象 User user context.getBean(User.class); //使⽤对象 System.out.println(user); }} 运行结果如下 Bean 注解的 Bean 的名称就是它的方法名如果同个类有多个对象我们通过 Bean 的名称来获取它们 Component public class BeanConfig { Bean public User user1(){ User user new User(); user.setName(zhangsan); user.setAge(18); return user; } Bean public User user2(){ User user new User(); user.setName(lisi); user.setAge(19); return user; } }SpringBootApplication public class SpringIocDemoApplication { public static void main(String[] args) { //获取Spring上下⽂对象 ApplicationContext context SpringApplication.run(SpringIocDemoApplicatio //根据bean名称, 从Spring上下⽂中获取对象 User user1 (User) context.getBean(user1); User user2 (User) context.getBean(user2); System.out.println(user1); System.out.println(user2); } } 运行结果 扫描路径 Bean 要想生效还需要被 Spring 扫描 通过修改目录结构来测试 Bean 对象是否生效 SpringBootApplication public class ApplicationControllerApplication {public static void main(String[] args) {ConfigurableApplicationContext context SpringApplication.run(ApplicationControllerApplication.class, args);Student s1 (Student) context.getBean(student1);Student s2 (Student) context.getBean(student2);System.out.println(s1);System.out.println(s2);} } 运行时抛出异常没有找到 Bean 对象 使用五大注解声明的 bean要想生效, 还需要配置扫描路径, 让 Spring 扫描到这些注解通过 ComponentScan 进行配置 SpringBootApplication ComponentScan({com.example.demo}) public class ApplicationControllerApplication {public static void main(String[] args) {ConfigurableApplicationContext context SpringApplication.run(ApplicationControllerApplication.class, args);Student s1 (Student) context.getBean(student1);Student s2 (Student) context.getBean(student2);System.out.println(s1);System.out.println(s2);} } 配置之后再次运行就可以正常跑起来了 加了 ComponentScan 注解的类当它需要用到某个依赖时它就会去 ComponentScan 所指的路径中找 一开始没配置扫描路径也可以运行是因为虽然没有显式配置 ComponentScan但它实际上已经包含在了启动类声明注解 SpringBootApplication 中了默认扫描的范围是 SpringBoot 启动类所在包及其子包 建议把启动类放在我们希望扫描的包的路径下, 这样我们定义的 bean 就都可以被扫描到
http://www.hkea.cn/news/14414724/

相关文章:

  • 网站建设费是宣传费用吗python编程课哪个机构最好
  • js做网站跳转做赚钱问卷调查的网站
  • 佛山做一个自己的网站做网站 图片格式
  • 公司网站建设的策划方案个人怎么开发软件
  • 网站网络建设wordpress 公式编辑器
  • 招聘网站开发程序员菜鸟教程网站开发
  • 兰州最好的网站开发公司深圳网站设计 建设首选
  • 石家庄在线制作网站wordpress自己写界面
  • 大连做网站的奇迹网站自己做
  • 网站建设flash做网站设计前景怎么样
  • 删除百度收录的网站微信端微网站怎么做
  • 手机端网站开发素材免费邮箱域名注册163
  • 中小企业网站开发韵茵制作企业网站是免费的吗
  • 网站建设项目需求分析温州seo收费
  • 网站分布双浩建设网站
  • 乐清网站制作公司哪家好wordpress和hexo
  • 横泉水库建设管理局网站WordPress做图床
  • 备案公司网站建设方案书广州网站建设电话大全
  • 个人网站论坛展示nginx apache wordpress
  • jsp 网站建设网站html模板
  • 一个营业执照可以做几个网站网站标题几个字合适
  • 搜索引擎站长平台深圳百度seo整站
  • 做海外房产最好的网站网站asp木马删除
  • 网站建设方案书是啥查询网站死链接
  • 自己做网站宣传产品云南定制化网站建设
  • 太原网站制作电话大鹏网站建设
  • 威海做网站的公司哪家好wordpress添加数据
  • 影视网站开发背景服务器iis搭建网站
  • 我自己的网站菏泽网站设计培训
  • 网站缓存优化怎么做外贸网站建设盲区