zoukankan      html  css  js  c++  java
  • 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以及一些环境属性等

  • 相关阅读:
    zzulioj1908: 小火山的围棋梦想
    zzulioj1913: 小火山的计算能力
    zullioj1905: 小火山的跳子游戏
    HDU 1025:Constructing Roads In JGShining's Kingdom
    HDU 1257:最少拦截系统
    HDU1051:Wooden Sticks
    HDU1950:Bridging signals
    HDU1087:Super Jumping! Jumping! Jumping!
    HDU5256: 序列变换
    3.SpringBoot配置文件以及自动配置原理
  • 原文地址:https://www.cnblogs.com/expiator/p/8194439.html
Copyright © 2011-2022 走看看