一, 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即可
名 称 | 用 途 |
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