最新整理的100道大厂高频spring面试题( 四 )

  • byName:通过参数名 自动装配 , Spring容器在配置文件中发现bean的autowire属性被设置成byname , 之后容器试图匹配、装配和该bean的属性具有相同名字的bean 。
  • byType:过参数类型自动装配 , Spring容器在配置文件中发现bean的autowire属性被设置成byType , 之后容器试图匹配、装配和该bean的属性具有相同类型的bean 。 如果有多个bean符合条件 , 则抛出异常 。
  • constructor:这个方式类似于byType ,但是要提供构造器参数 , 如果没有确定的带参数的构造器参数类型 , 将会抛出异常 。
  • autodetect:首先尝试使用constructor来自动装配 , 如果不行 , 则使用byType方式 。
  • 42、自动注入有限制吗?自动注入的限制:
    • 重写: 你仍可以用 < constructor-arg >和 < property > 配置来定义依赖 , 这些配置将始终覆盖自动注入 。
    • 基本数据类型:不能自动装配简单的属性 , 如基本数据类型、字符串和类 。
    • 模糊特性:自动装配不如显式装配精确 , 如果有可能尽量使用显示装配 。
    43、你能在Spring中注入null和空字符串吗?是的 , 可以 。
    D.Spring注解44、有哪些重要的Spring注解?我在项目中使用的一些Spring注解:
    • @Component:用于指示类是组件 。 这些类用于自动注入 , 并在使用基于注解的配置时配置为bean 。
    • @Controller:是一种特定类型的组件 , 用于MVC应用程序 , 主要与@RequestMapping注解一起使用 。
    • @Repository:用于表示组件用作存储库和存储/检索/搜索数据的操作 。 我们可以将此注解应用于DAO实现类 。
    • @Service:用于指示类是服务层 。
    • @Required:此注解简单地说明作用的bean属性必须在配置时通过bean定义中的显式属性值或通过自动注入填充 。 如果作用的bean属性未填充 , 容器将抛出BeanInitializationException 。
    • @ResponseBody:用于将对象作为response , 通常用于将XML或JSON数据作为response发送 。
    • @PathVariable:用于将动态值从URI映射到处理方法参数 。
    • @Autowired:对自动注入的位置和方式提供了更细粒度的控制 。 它可以用于在setter方法上自动注入bean 。 就像@Required 注解一样 , 修饰setter方法、构造器、属性或者具有任意名称和/或多个参数的PN方法 。
    • @Qualifier:当有多个相同类型的bean并且只需要将一个bean自动注入时 , @Qualifier注解与@Autowired注释一起使用 , 通过指定将连接哪个bean来消除歧义 。
    • @Scope:配置Spring bean的作用域 。
    • @Configuration:表示Spring IOC容器可以将该类用作bean定义的源 。
    • @ComponentScan:应用此注解时 , 将扫描包下的所有可用类 。
    • @Bean:对于基于java的配置 , 用@Bean注解修饰的方法将返回一个在Spring应用程序上下文中注册为Bean的对象 。
    • 用于配置切面和通知、@Aspect、@Before、@After、@Around、@Pointcut等的AspectJ注解 。
    45、@RequestParam注解的作用是什么?spring中的@RequestParam注解将查询字符串的参数值绑定到控制器的方法参数 。
    46、注解@Primary的重要性当有多个相同数据类型的bean时 , 开发人员Spring的@Primary注解 , 它会自动为特定bean提供更高的优先级 。 这个注解可以用在任何直接或间接用@Component注解修饰的类上 , 也可以用在用@Bean注解修饰的方法上 。
    47、XML配置和注解之间有什么区别?注解的优点:
    • 所有信息都在一个文件中
    • 当类更改了 , 不用修改xml配置文件
    xml配置的优点:
    • POJO及其行为之间更清晰地分离
    • 当你不知道哪个POJO负责该行为时 , 更容易找到该POJO
    48、@SpringBootApplication的作用是什么?@SpringBootApplication 注解是在springboot1.2.0中引入的 , 它支持自动配置特性 。
    此批注封装了三种不同注解的作用:
    • @Configuration:允许开发人员显式地注册bean
    • @ComponentScan:启用组件扫描 , 这样控制器类和其他组件将被自动发现并注册为Spring应用程序上下文中的bean
    • @EnableAutoConfiguration:启动SpringBoot的自动配置特性
    此注解可以使用以下可选参数:
    • exclude:从自动配置中排除的类列表
    • excludeNames:从自动配置中排除完全限定类名的列表
    • scanBasePackage:其中提供了扫描程序包的列表
    • scanBasePackageClasses:提供必须应用于扫描的其他包中的类的列表
    49、解释@InitBinder?此注解修饰在声明日期格式的方法上 , 并且在整个类中 , 使用定义的日期格式 。 每当绑定作用在日期字段@InitBinder注解中时 , 说明使用CustomDateEditor , 而CustomDateEditor则使用@InitBinder中声明的日期格式 。