景区网站建设策划,网站开发学些什么软件,河南住房和城乡建设厅官网,装饰行业网站模板Spring是一个包含众多工具等Ioc容器 对象这个词在Spring范围内#xff0c;称为bean Spring两大核心思想 1.IOC (IOC是控制反转#xff0c;意思是控制权反转-控制权#xff08;正常是谁用这个对象#xff0c;谁去创建#xff0c;#xff09;-控制对象的控制权#xf… Spring是一个包含众多工具等Ioc容器 对象这个词在Spring范围内称为bean Spring两大核心思想 1.IOC (IOC是控制反转意思是控制权反转-控制权正常是谁用这个对象谁去创建-控制对象的控制权反转的意思是创建对象的控制权交给了Spring) 优点解耦合 高内聚一个模块内部的关系 低耦合各个模块之间前的关系 2.AOP list/map装数据的容器 tomcat装的是web的容器 Spring容器装的是对象 引入案列为什么推荐用Spring) 上面代码的改动成本太大耦合性太高 如果改成代码这种传递的是对象就直接给对象 不采用生成对象而是你给我什么我就用什么这种也就是你需要往里面就像是下面这个图在main中传递对象。 IOC帮助我们做这个工作。 Spring可以帮助我们创建对象可以往里面存也可以从这个里面取 我们要做的也就是1.告诉Spring帮我们创建对象2.知道如何取出来这些对象 DI是一种实现方式依赖注入 Autowiredprivate BookService bookService; 假如说加上上面的Autowired就相当于下面的这个意思 Autowired:告诉Spring,从容器中取出这个对象赋值给当前对象的属性 private BookService bookService;public BookController(){bookServicenew BookService();} Component:告诉Spring帮助我们存储对象。 Component
public class BookService {Autowiredprivate BookDao bookDao;
// private BookService bookService;
//
// public BookController(){
// bookServicenew BookService();
// }public ListBookInfo getBookList() {ListBookInfo bookInfos bookDao.mockData();for (BookInfo bookInfo : bookInfos) {if (bookInfo.getStatus() 1) {bookInfo.setStatusCN(可借阅);} else {bookInfo.setStatusCN(不可借阅);}}return bookInfos;}
} MVC提供了注解,前面的RequestMapping。 IOC依赖对象的创建的控制权存一种思想DI(依赖注入)是一种实现方式 DI是把依赖对象取出来并且赋给该对象属性取 DI主要通过两类注解类型可以实现 IOC提供两类注解 1.类注解:Controller,Service,Respository,Component,Configuration 2.方法注解:Bean package com.example.IOCtry;import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
//加上Controller才会不报错假如不加上Controller就会报错
//Controller
public class UserController {public void prin(){System.out.println(春节快乐);
}
}package com.example.IOCtry;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;SpringBootApplication
public class IoCtryApplication {public static void main(String[] args) {//启动类是帮助我们启动spring,这个命令可以返回一个spring//context上下文就是spring一个运行环境ApplicationContext contextSpringApplication.run(IoCtryApplication.class, args);//从容器中拿对象UserController beancontext.getBean(UserController.class);//如果去掉Control注解就会报错bean.prin();}}会报这个错误意思是说没哟拿到bean这个对象 下面这个是getBean的根据名称拿一个类注意:这个的获取规范是小驼峰)注意这个返回的是一个Object所以我们需要对他进行类型转换 第三种根据名称和类名拿 public static void main(String[] args) {//启动类是帮助我们启动spring,这个命令可以返回一个spring//context上下文就是spring一个运行环境ApplicationContext contextSpringApplication.run(IoCtryApplication.class, args);//从容器中拿对象UserController beancontext.getBean(UserController.class);//如果去掉Control注解就会报错bean.prin();UserService bean2context.getBean(UserService.class);bean2.doService();UserService bean3(UserService) context.getBean(userService);bean3.doService();//根据名称和类型获取beanUserService userServicecontext.getBean(userService,UserService.class);userService.doService();}} ⚠️特殊情况假如类名前两位第一位第二位字母都是大写的情况bean的名称是类名 常见面试题ApplicationContext vs BeanFactory 获取bean对象是父类BeanFactory提供的功能 继承关系和功能方面来说:Spring容器有两个顶级的接口:BeanFactory和ApplicationContext.其中BeanFactory提供基础的访问容器能力而ApplicationContext属于是BeanFactory的子类他除了继承了BeanFactory的所有功能之外他还拥有独特的特性国际化支持中日韩等语言资源访问支持以及事件传播等方面的支持 从性能方面来说:ApplicationContext是一次性加载并初始化所有的Bean对象而BeanFactory是需要哪个就去加载哪个因此会更加清量空间与时间) Service(服务存储)和下面使用方法一致 Repository(仓库存储)和control使用方法一致 Repository
public class UserRepository {public void doRepository() {//代码格式化快捷键crtlaltlSystem.out.println(aini);}} UserRepository userRepositorycontext.getBean(UserRepository.class);userRepository.doRepository(); Component(组件存储)和下面用法一致 Configuration(配置存储) // UserRepository userRepositorycontext.getBean(UserRepository.class);
// userRepository.doRepository();
// UserComponent userComponentcontext.getBean(UserComponent.class);
// userComponent.doComponent();UserConfig userConfigcontext.getBean(UserConfig.class);userConfig.doConfig();} package com.example.IOCtry.config;import org.springframework.context.annotation.Configuration;Configuration
public class UserConfig {public void doConfig(){System.out.println(我也是条狗);}
}为什么要去分层假如说都用一个注解不行吗-这就跟车牌号一样方便管理也节约号码 常见面试题二 常用的注解有哪些分别是什么作用 web url映射:RequestMapping 参数接口和接口响应:RequestParam,RequestBody,ResponseBody Bean的存储:Controller,Service,Repository,Component,Configuration,Bean Bean的获取:Autowired,Qualifier,Resource