SpringMVC是什么
SpringMVC是SpringFramework中基于servelet的一个MVC模式实现,其中最主要的一个核心类是DispatcherServlet,这个类负责接收前端的请求,通过合理的调用各种的controller获得相应的请求结果后解析视图,返回前端响应数据。
@Conponent和@Bean有什么不同
@Component用于注解在类上方,标记类为一个组件,IOC容器会自动扫描指定包下被@Component注解的类,自动创建并将他们放入IOC容器中;@Bean注解用于放置在配置类的方法上面,标记该方法的返回值是一个组件,需要加入到IOC容器中,相对于@Component注解来说,@Bean注解标记的注入方式具有更高的定制性。
Spring两个id相同的bean会报错?
如果是基于xml文件进行配置,则报错的时间是在解析xml文件生成BeanDefinition的时候,id是bean的唯一标识,Spring在启动时会去验证这个id的唯一性,如果在相同的xml文件中,则会报错,而在不同的xml文件中则会发生覆盖的情况,如果是在Spring3.x以后的版本中,则可以使用@Configuration和@Bean来创建类并注入到IOC容器中,如果在同一个配置类中声明了同一id的两个bean,则只有第一个声明的bean会被加载到IOC容器中,之后发生错误的时间则是在Spring进行依赖注入阶段会发生一些错误。
IOC是什么
控制反转,将实例的创建和管理权限转交给框架。降低了对象之间的耦合性,提高了程序的灵活性。
Bean的声明方式
- xml配置文件
- 使用@Configuration和@Bean联合使用
IOC的工作流程
- IOC容器初始化阶段:解析xml文件或者配置类的信息,生成BeanDefinition,注册到IOC容器中
- 完成bean的初始化和依赖注入
- 通过反射机制对没有lazy-init属性的单例bean进行初始化
- 完成bean的依赖注入
- Bean的使用
对于非单例bean,在每次创建的时候都会调用bean的初始化方法,IOC容器不会管理这一部分的bean。