• SPRINGBOOT 读书笔记


    Spring基础

    Spring的发展

    xml配置 注解配置 Java配置

    Spring模块:核心容器 AOP 消息 web 数据访问集成

    常用的:@Component @Service @Repository @Controller @Configuration @Bean

    AOP

    相关注解

    @EnableAspectJAutoProxy @Aspect @PoinCut @After @Before @BeforeThrowing @AtferThrowing @Around

    切入点定义

    execution(* com..*.* (...))

    within(com.text.*)包下任意类

    this(com.test.lntf)实现Intf接口的所有类或单个类

    @within/target(com.xxx.Transactional)带有Transactional标注的所有类

    @annotion(com.xxx.Transactional)带有Transactional标注的所有类的任意方法

    @args(com.xxx.Transactional)参数是带有Transactional标注的所有类

    args(String)参数类型

    SCOPE

    @Scope("prototype")或singleton Request Session

    @Value(EL)

    注入普通字符

    操作系统属性

    表达式结果

    其他Bean属性

    文件内容(Resource)

    网址内容(Resource)

    属性文件,注入配置文件需要使用@PropertySource指定文件地址

    在使用@Value注入要配置PropertySourcesPlaceholderConfigurer的Bean

    @Bean初始化和销毁

    @Bean(initMethod="init", destroyMethod="destroy")

    @Profile

    指定profile

    1、设定Environment的ActiveProfies

    2、jvm的spring.profiles.active

    3、servlet的context parameter

    事件

    1、自定义事件,继承ApplicationEvent

    2、定义事件监听器,实现ApplicationListener

    3、使用容器发布事件

    Spring Aware

    BeanNameAware

    BeanFactoryAware AppiicationContextAware

    MessageSourceAware

    ApplicationEventPublisherAware

    ResourceLoaderAware

    继承上述接口,使用容器提供的功能

    此外,可以直接以@Autowired方法向Bean注入

    计划任务

    1、配置类使用@EnablbeScheduling

    2、方法上使用@Scheduled(fixedRate/fixedDelay/cron)

    多线程

    1、配置类使用@EnableAsync注解开启异步任务支持

    2、配置类实现AsyncConfigurer接口并重写getAsyncExecutor方法,返回ThreadPoolTaskExecutor

    3、方法上使用@Async,表明该方法是一个异步方法

    测试

    @RunWith

    @ContextConfiguration

    @ActiveProfiles

    SPRINGMVC基础

    搭建web项目

    1、配置类使用@EnableWebMvc,可以继承WebMvcConfigureAdapter,重写其方法,完成SpringMVC的配置

    2、实现WebApplicationInitializer接口,完成web配置

    3、打包处理

    public class WebInitializer implements WebApplicationInitializer {
    
        @Override
        public void onStartup(ServletContext arg0) throws ServletException {
            AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
            ctx.register(MyMvcConfig.class);
            ctx.setServletContext(arg0);
            Dynamic servlet = arg0.addServlet("dispatcher", new DispatcherServlet(ctx));
            servlet.addMapping("/");
            servlet.setLoadOnStartup(1);
        }
    
    }
    
    @Configuration
    @EnableWebMvc
    @ComponentScan
    public class MyMvcConfig extends WebMvcConfigurerAdapter {
        @Bean
        public InternalResourceViewResolver viewResolver() {
            InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
            viewResolver.setPrefix("/WEB-INF/classes/views/");
            viewResolver.setSuffix(".jsp");
            viewResolver.setViewClass(JstlView.class);
            return viewResolver;
        }
        
        @Bean
        public DemoInterceptor demoInterceptor() {
            return new DemoInterceptor();
        }
        
        @Bean
        public MultipartResolver multipartResolver() {
            CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
            multipartResolver.setMaxUploadSize(1000000);
            return multipartResolver;
        }
        
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/assets/**").addResourceLocations("classpath:/assets/");
        }
        
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(demoInterceptor());
        }
        
        @Override
        public void addViewControllers(ViewControllerRegistry registry) {
            registry.addViewController("/index").setViewName("/index");
            registry.addViewController("/toUpload").setViewName("/upload");
        }
    }

    资源放于src/main/resource下,打包后会置于WEB/INF/下

    常用注解

    @Controller @RequestMapping @ResponseBody @RequestBody @PathVariable @RestController

    @ControllerAdvice组成

    @ExceptionHandler @ModelAttribute @InitBinder

    HttpMessageConverter用于处理request和response数据

    测试

    @RunWith

    @ContextConfiguration(MVC配置类)

    @WebAppconfiguration(资源文件位置)

    SpringBoot基础

    测试

    @RunWith

    @SpringApplicationConfiguration

    @WebAppConfiguration

    入口@SpringBootApplication实际上开启了

    Configuration

    EnableAutoConfiguration

    ComponentScan

    利用类型安全配置@ConfigurationProperties

    @ConfigurationProperties(prefix = "druid")
    public class DruidProperties {
    
        private String url;
    
            ...  
    }
    
    @Configuration
    @EnableConfigurationProperties(DruidProperties.class)
    @ConditionalOnClass(DruidDataSource.class)
    @ConditionalOnProperty(prefix = "druid", name = "url")
    @AutoConfigureBefore(DataSourceAutoConfiguration.class)
    public class JpaConfig {
        @Autowired
        private DruidProperties properties;
    
        @Bean
        public DataSource dataSource() {
            DruidDataSource dataSource = new DruidDataSource();
            dataSource.setUrl(properties.getUrl());
            dataSource.setUsername(properties.getUsername());
            dataSource.setPassword(properties.getPassword());
            if (properties.getInitialSize() > 0) {
                dataSource.setInitialSize(properties.getInitialSize());
            }
            if (properties.getMinIdle() > 0) {
                dataSource.setMinIdle(properties.getMinIdle());
            }
            if (properties.getMaxActive() > 0) {
                dataSource.setMaxActive(properties.getMaxActive());
            }
            dataSource.setTestOnBorrow(properties.isTestOnBorrow());
            try {
                dataSource.init();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
            return dataSource;
        }
        
        @Bean 
        PlatformTransactionManager transactionManager() {
            JpaTransactionManager transactionManager = new JpaTransactionManager();
            transactionManager.setDataSource(dataSource());
            return transactionManager;
        }
    }
  • 相关阅读:
    python urllib urllib2
    python 标准库获取网络信息
    dell N1500 安全配置
    python jinjia2模板使用
    flask-admin
    github使用
    python中文处理
    C++输入和输出中进制问题
    hdu1708(C++)
    hdu1017(C++)
  • 原文地址:https://www.cnblogs.com/m2492565210/p/7898828.html
Copyright © 2020-2023  润新知