SpringBoot简单理解

SpringBoot

一、特点:
1.默认大于配置,不需要大量配置文件,没有web.xml,拥有可运行的Application类.

2.一般通过java代码配置,而尽量少使用xml配置。

3.maven中拥有大量的初始依赖,可以直接使用。
二、项目结构
1.Application.java必须与Controller所在的包、Dao所在的包等包位于同一层,否则无法打开页面

2.resource目录下的static目录里面的html文件,可以不走后台controller,直接从页面访问。


三、注解:                 

0.@SpringBootApplication可以用在启动类的上方。

@SpringBootApplication
public class SpringBootDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootDemoApplication.class, args);
    }

}

此注解包括了包括了@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan注解。

1.@SpringBootConfiguration 继承至@Configuration,对于熟悉spring的开发者而言,此标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到srping容器中,并且实例名就是方法名

2.@EnableAutoConfiguration 这个注解就是springboot能自动进行配置的魔法所在了。主要是通过此注解,能所有符合自动配置条件的bean的定义加载到spring容器中,比如根据spring-boot-starter-web ,来判断你的项目是否需要添加了webmvc和tomcat,就会自动的帮你配置web项目中所需要的默认配置。

3.@ComponentScan 这个熟悉spring的开发者也应该熟悉,会扫描当前包及其子包下被@Component,@Controller,@Service,@Repository等注解标记的类并纳入到spring容器中进行管理。

4.@RestController相当于@ResponseBody 加 @Controller
用@RestController修饰类,类里面的方法就相当于有了@ResponseBody,会通过Url生成json.

5.@RequestMapping的method包括RequestMethod.GET,RequestMethod.POST,RequestMethod.PUT,RequestMethod.DELETE

6.@PostMapping、@DeleteMapping、@PutMapping、@GetMapping
@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写

@PostMapping是一个组合注解 是@RequestMapping(method = RequestMethod.POST)的缩写

示例如下:

@RestController
public class UserController {

    @Autowired
    private UserSerevice userService;

    @GetMapping(value = "/user")
    public User findUserByName(String name){
        User user =userService.findUserByName(name);
        return user;
    }
    
}

7.@ModelAttribute注解有什么用?

修饰参数时,相当于@RequestParam
8.@RestControllerAdvice ,或者@ControllerAdvice 控制层通知器,可以用于统一拦截异常,进行响应处理。
9.@Value修饰变量,可以获取properties文件的属性值。比如@Value("${ datasource.url }")

@RestController
public class ConfigController {

     @Value("${ user }")
     private  String name;

     @GetMapping(value = "/name")
     public String name(){
          return  "hello"+name ;
     }
}

10.@Configuration可以完成类似xml配置bean的工作。在方法中返回实例,并在方法上方添加@Bean。

如下所示:

@Configuration
public class ShiroConfiguration {

    /**
     * Shiro生命周期处理器
     */
    @Bean
    public LifecycleBeanPostProcessor lifecycleBeanPostProcessor(){
        return new LifecycleBeanPostProcessor();
    }


    @Bean
    @DependsOn({"lifecycleBeanPostProcessor"})
    public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator(){
        DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
        advisorAutoProxyCreator.setProxyTargetClass(true);
        return advisorAutoProxyCreator;
    }


}

11.@WebFilter可以添加过滤器Filter。类实现Filter接口,重写init(),doFilter(),destroy()方法。。并在类的上方添加@WebFilter注解,并指定过滤的路径urlPatterns。

@WebFilter(filterName="myFilter",urlPatterns="/*")
public class MyFilter implements Filter {
    @Override
    public void destroy() {
        System.out.println("过滤器销毁");
    }
    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        System.out.println("执行过滤操作");    
        chain.doFilter(request, response);
    }
    @Override
    public void init(FilterConfig config) throws ServletException {
        System.out.println("过滤器初始化");
    }
}


四、SpringBoot MVC
Spring Boot MVC中,Web自动化配置。默认使用的视图是 ThymeLeaf


五、Spring Data JPA
1.数据持久层框架Spring Data JPA可以直接操作数据源,不需要手动创建数据库、配置数据源就可以使用。
使用方法:  Dao接口继承JpaRepository,使用Jpa注解。另外,还得将实体体Entity与数据库进行映射。

可以通过实体类映射创建数据表。

六、模板引擎Thymeleaf
SpringBoot不推荐使用jsp做为视图,jsp会对性能产生影响。通常使用Thymeleaf

七、统一异常处理

1.在类上面添加注解@RestControllerAdvice ,或者@ControllerAdvice 控制层通知器,可以用于统一拦截异常,进行响应处理。

在方法上面添加注解@ExceptionHandler并写入对应的Exception类,比如@ExceptionHandler(value = MyException.class)

说明:
@ControllerAdvice是controller的一个辅助类,最常用的就是作为全局异常处理的切面类
@ControllerAdvice可以指定扫描范围
@ControllerAdvice约定了几种可行的返回值,如果是直接返回model类的话,需要使用@ResponseBody进行json转换

@ControllerAdvice
 public class GlobalExceptionHandler {
     @ExceptionHandler(RuntimeException.class)
     @ResponseBody //在返回自定义相应类的情况下必须有,这是@ControllerAdvice注解的规定
     public MyExceptionResponse exceptionHandler(RuntimeException e, HttpServletResponse response) {
         //...
         return resp;
     }
 }

八、安全管理

1.Spring Security、Shiro,可以通过安全框架进行权限管理。

九、单元测试

1.在maven中添加spring-boot-starter-test依赖,然后在单元测试类上面添加注解,如下示

@RunWith(SpringJUnit4ClassRunner.class)   表示通过Junit4类class运行
@SpringBootTest(classes = SpringBootDemoApplication.class)   这里的class对应的是SpringBoot的启动类class,根据项目启动类修改

2.可以在Junit中,进行依赖注入。简化初始化操作。

十、多数据源配置

多数据源配置,其实就是配置后可以连接多个数据库。

十一、监控

Actuator是Spring Boot提供的对应用系统的自省和监控的集成功能,可以查看应用配置的详细信息,例如自动化配置信息、创建的Spring beans以及一些环境属性等

原文地址:https://www.cnblogs.com/expiator/p/8194439.html