【JavaEE进阶】SpringIoCDI
springspringMVCSpringBoot不是互斥的boot是框架引入了第三方和很多依赖像12306MVC是这其中一个功能spring量大核心思想iocaopspring是包含了众多工具方法的IoC容器IOC是控制反转对象控制权正常谁用谁控制也就是new一个现在同一交给spring使用lombok和web勾上di依赖注入容器在运⾏期间, 动态的为应⽤程序提供运⾏时所依赖的资源称之为依赖注⼊。相对应的使用就是DI通过依赖注入从ioc的容器中去拿这个对象进行注入进来用Component把这一对象放进spring容器中之后就不用new了用Autowired取出来并赋值给那个类注解Controller、Service、Repository、Component、Configuration.⽅法注解Bean.需要配合类注解使用创建第三方的时候用或者同一个类需要多个对象service业务逻辑层service包下面Repository数据持久层dao里面添加有参的时候建议把无参的加上data完事之后有参AllArgsConstructor无参NoArgsConstructor一个类型创建两个对象用context.getBean拿括号里面可以(类型.class)但是同一个类型多个对象就不可以了(“名字”类型.class)(“名字”)去拿bean对象bean name默认规则五大注解: bean name为1)如果类名前两位为大写,则bean name为类名本身2)其他情况: bean name为类名的小驼峰写法Bean:bean name为方法名这个是默认的可以修改在controller后面括号引号Bean是括号里面name“……”里面甚至可以是数组数组是小括号里面加个大括号spring启动的时候先看启动类在哪里在这个对应路径下面找五大注解类所以他放的位置不重要DI依赖注入实现也就是创建过程DI三种方式Autowired属性注入构造方法注入正常右键有参构造床阿金只有一个构造方法时,默认就执行这一个构造方法当有无参的构造方法时默认执行无参的构造方法当有多个的构造方法时没有无参构造方法,且有多个有参构造时运行报错想走无参可通过autowired指定否则走无参setter方法注入还是generate需要用到autowired才能使用属性注入的时候在最上面声明多个引用变量的时候每一个都要加上autowired不能finalset也不能final构造方法可以final开发中最常见的是属性注入对于同一个类有多个对象时使用autowired有问题解决方案Primary在对象里面选一个最主要的Qualifier(“bean名称”)一定要配合autowired使用Resource(name“名字”)后两个使用的多如果这三个都不用会根据声明的变量名字来找或者看是不是只有一个面试题autowired和resource区别Autowired是spring框架提供的注解而Resource是JDK提供的注解Autowired 默认是按照类型注入而Resource是按照名称注入相比于Autowired来说Resource支持更多的参数设置例如name设置根据名称获取 Bean.面试题