springboot面试题

Springboot核心注解是那几个?由那几个注解组成

启动类Application 上面的注解 @SpringbootApplication  由一下三个注解组合

@SpringbootConfiguration: 组合了Configuration注解,实现配置文件的功能
@EnableSAutoConfiguration: 打开自动配置功能。
@ComponentScan: Spring组件扫描

SpringBoot Starter工作原理

Springboot就是各种Starter组合起来,自己也可以开发Starter

@SprinbootApplication注解会自动去maven中读取每个starter中的配置文件(), 该文件配置了所有需要被Spring容器创建的bean  并注入springContext中
@component 注解功能

Spring Boot有哪几种读取配置的方式?

@PropertySource @value @Environment @ConfigurationProperties 注解来绑定变量

Springboot自动配置原理是什么?

@EnableAutoConfiguration注解 自动配置功能    具体过程如下:

从配置文件/Meta/Spring.factories 加载可能用到的自动配置类

去重,并将exclude和excludeName属性携带的类排除

将满足条件@Conditional 的自动配置类返回

SpringBoot实现全局异常处理?

通过使用ControllerAdvice类处理异常, 来处理@Controller类抛出的所有异常。


@component 注解: 把普通的pojo实例化到spring容器中  当我们的类不知道该归类到哪一类时可以使用@component来注解 新建的类不归属(@Controller @Service)中的任何一个
@RunWith(SpringRunner.class):  Test测试类要使用的类实例化到spring容器中,自动注入才生效 不然SpringbootTest测试类报错空指针异常


**lombok插件注解**  
lombok插件:  简化代码提高开发效率  缺点:不支持多种参数构造器重载 降低代码阅读性
@Data : 提供类的get set equals hashcode canEqual toString方法
@AllArgsConstructor : 提供类的全参构造
@NOArgsConstructor:  提供类的无参构造
@EqualsAndHashCode:  提供equals和hashCode方法
@Log4j/@Slf4j : 提供日志打印到springboot日志中  其中log4j前段时间爆出严重安全事故 请注意版本
@Setter : 标注在属性上 提供set方法
@Getter: 标注在属性上 提供get方法

**@modelAttribute:将方法入参对象添加到模型中,**

```
@RequestMapping(value="/handle")
public String handle(@ModelAtttribute("user") User user){
    user.setUserId("1000")
    return "success";
    }
```
@requestMapping是映射的url是handle  即/handle
这里有模型数据,User类里面有getter和setter方法
函数的返回类型是String,返回的视图名是success,如果视图是jsp则应该是success.jsp
在spring中将User类以参数的形式传入到handle的方法,在方法体里就可以设置user的对象属性。

**@PathVariable 用来获取请求url中动态参数**

```
@controller
public class TestController{
@RequestMapping(value="/user/{userId}/role/{roleId}",method=RequestMethod.GET)
public String getlogin(@PathVariable(userId) String userid,@PathVariable(roleId) String roleId){
    System.out.println("动态获取的用户id"+ userId);
    System.out.println("动态获取规则id"+ roleId);
    return "hello"    //放回hello的视图页面,例如hello.jsp
}
```

你可能感兴趣的:(java,java,spring,boot,开发语言)