Spring Boot 笔记 五 (企业级开发)

一, Spring Security

安全框架的二个概念:认证和授权.

   1, 配置

        加注解@EnableWebSecurity并继承WebSecurityConfigurerAdapter

        e,g,

           @Configuration

           @EnableWebSecurity

          public class xxxxx extends WebSecurityConfigurerAdapter{

                   @Override

                 protected void configure(HttpSecurity http) throws Exception{

                     //todo

                  }

         }

   2, 用户认证

       在spring security里我们重写configure(AuthenticationManagerBuilder auth)来实现.

       e.g.

      内存中用户: auth.inMemoryAuthentication().withUser("xx").password("xx").roles("xxx")........

      jdbc用户:  auth.jdbcAuthentication().dataSources(dataSource); ......

    备注: 对于通用的一般需要我们自定义实现UserDetailsService接口,再进行进一步获取用户认证

   3,请求授权

    Spring security 通过重写configure(HttpSecurity http) 方法来实现请求拦截.

    可使用如下匹配器来匹配请求路径:

  • antMatchers: 使用ant风格路径匹配
  • regexMatchers: 使用正则表达式风格

   4, Spring Boot的支持

     Spring Boot针对Spring Security的自动配置在org.springframework.boot.autoconfigure.security包中

      主要通过SecurityAutoConfiguration 和SecurityProperties来完成配置

     SecurityProperties使用以"security"为前缀的属性配置/

     e.g.

      security.user.name=user    #内存中用户默认账号

      security.user.password=  

      security.user.role=

      security.require-ssl=false      #是否需要ssl支持

      security.enable-csrf=false     #是否开启"跨网站请求伪造"支持,默认关闭

      security.basic.enabled=true

      security.basic.realm=Spring

      security.basic.path= # /**

      security.basic.authorize-mode

       .............

      security.ignored= 

        .........

二, Spring Batch 批处理

     Spring Batch用来处理大量数据操作的一个框架,主要用来读取大量数据,然后进一步处理后输出指定格式.

     只需注册为Bean加上@EnableBatchProcessing即可

SpringBatch组成部分
名   称 用   途
JobRepository 用来注册Job的容器
JobLanucher 用来启动job的接口
Job 我们要实际执行的任务,包含一个或多个step
Step  
ItemReader 用来读取数据的接口
ItemProcessor 用来处理数据的接口
ItemWriter 用来输出数据的接口

   1, Job 监听

  如果需要监听一个job的执行情况,我们需定义一个类实现JobExecutionListener

   2, 计划任务

   任务是通过JobLauncher的run方法来执行的, 因此我们只需在普通的计划任务方法中执行JobLauncher

    的run方法.

   3, 参数后置绑定

   我们可以在JobParameters中绑定参数.

   在Bean定义的时候使用@StepScope,然后通过@Value注入此参数

   e.g.

   JobParameters jobParameters = new JobParametersBuilder().

                           .addLong("time",xxx)

                            .addString("input.file.name", path);

   JobLauncher.run(xx, jobParameters );

    

     @Bean

     @StepScope

      public ItemReader<XXXX>

       read(@Value("#{jobParameters['input.file.name']}") String pathToFile) throw Exception{

            //TODO

           .....

       }  

   4, Spring Boot 的支持

     源码在org.springframework.boot.autoconfigure.batch下

    Spring.Boot提供如下配置:

     spring.batch.job.names= job1, job2   #启动时执行,默认全部执行

     spring.batch.job.enabled=true    #是否自动执行, 默认true

     spring.batch.initializer.enabled = true   #是否初始化spring batch数据库,默认true

     spring.batch.schema=

     spring.batch.table-prefix=   #设置spring batch的数据库表前缀

三, 异步消息

    异步消息主要是为了系统间的通信.

   所谓异步消息即消息发送者无所等待消息接受者的处理及返回,甚至无需关系消息是否发送成功

   两个概念: 消息代理个目的地

   两种形式: 队列和主题. 对于用于点对点, 主题用于发布订阅

    1, 企业级消息代理

    JMS的实现由activeMQ,HornerQ

    AMQP: 也是一种消息代理的规范,不仅兼容JMS还支持跨语言跟平台,主要实现有RabbitMQ.

    JMS       ----> spring-jms :   @JMSListener, @EnableJms

    AMQP   ----> spring-rabbit: @RabbitListener, @EnableRabbit

   2, Spring Boot 的支持

     源码位于: org.springframework.boot.autoconfigure.jms下

    ActiveMQ的连接属性如下:

   spring.activemq.broker-url=tcp://localhost:5555   #消息代理路径

   spring.activemq.user=

   spring.activemq.password=

   spring.activemq.in-memory=true

   spring.activemq.pooled=false

   AMQP的配置属性如下:

   spring.rabbitmq.host=localhost  #服务器地址, 默认localhost

   spring.rabbitmq.user=

   spring.rabbitmq.password=

四, Spring Integration 系统集成

    spring integration主要由 Message, Channel, Message Endpoint组成

   1, Message

  •        用来在不同部分之间的传递数据,由消息体和消息头组成

   2, Channel

      消息发送者发送消息到消息通道(Channel), 消息接受者从通道获取消息

      1), 顶级接口

  •  MessageChannel: 消息通道的顶级接口
  • PollableChannel:
  • SubscribableChannel

     2), 常用消息通道

  •  PublishSubscribeChannel
  • QueueChannel
  • PriorityChannel
  • RendezvousChannel
  • DirectChannel
  • ExecutorChannel

      3), 通道拦截器

      4),  Message Endpoint

  •   Channel Adapter
  • Gateway
  • Service Activator
  • Router
  • Filter
  • Splitter
  • Aggregator
  • Enricher
  • Transformer
  • Bridge

猜你喜欢

转载自ldaolong.iteye.com/blog/2405914
今日推荐