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();
}
}
@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();
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() > ) {
dataSource.setInitialSize(properties.getInitialSize());
}
if (properties.getMinIdle() > ) {
dataSource.setMinIdle(properties.getMinIdle());
}
if (properties.getMaxActive() > ) {
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;
}
}
SPRINGBOOT 读书笔记的更多相关文章
- 【读书笔记】SpringBoot读书笔记
整体目录结构: 一.入门 二.开发第一个应用程序 三.自定义配置 四.测试 五.Groovy与Spring Boot Cli 六.在Spring Boot中使用Grails 七.深入Actuator ...
- [读书笔记] 一、Spring boot项目搭建与配置文件
读书笔记:[JavaEE开发的颠覆者 Spring Boot实战] 作者:汪云飞 从今天开始坚持读书,并记录下此读书笔记. 一,初接触 Spring boot 项目Hello world搭建 1.po ...
- 《精通Spring 4.X企业应用开发实战》读书笔记1-1(IoC容器和Bean)
很长一段时间关注在Java Web开发的方向上,提及到Jave Web开发就绕不开Spring全家桶系列,使用面向百度,谷歌的编程方法能够完成大部分的工作.但是这种不系统的了解总觉得自己的知识有所欠缺 ...
- 《深入理解 Java 内存模型》读书笔记

本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 《C#本质论》读书笔记(18)多线程处理
.NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...
- C#温故知新:《C#图解教程》读书笔记系列
一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...
随机推荐
- 55、js对象
在python中我们学习了面向对象,javascript也是一门面向对象语言,在JavaScript中除了null和undefined以外其他的数据类型都被定义成了对象. JavaScript的对象简 ...
- 小白的Python之路 day2 文件操作
文件操作 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 ...
- 【二十六】php之文件编程
1.获取文件的相关信息 fopen.fstat.fclose(打开文件.获取文件相关信息.关闭文件) filesize.filectime.filemtime.fileatime(文件大小.上次cha ...
- 云计算之路-阿里云上-2017年最错误的选择: 生产环境使用 docker swarm
2017年12月29日 10:18 ~ 11:00 左右,由于整个 docker swarm 集群宕机,造成我们迁移至 .net core 跑在 docker swram 上的所有站点无法正常访问,由 ...
- 【阿里聚安全·安全周刊】双十一背后的“霸下-七层流量清洗”系统| 大疆 VS “白帽子”,到底谁威胁了谁?
关键词:霸下-七层流量清洗系统丨大疆 VS "白帽子"丨抢购软件 "第一案"丨企业安全建设丨Aadhaar 数据泄漏丨朝鲜APT组织Lazarus丨31款违规A ...
- Python3 将txt数据转换成列表,进行排序,筛选
Python 程序员需要知道的 30 个技巧 首先是数据: 将上边的四个数据分别写在新建的txt文件中 1.将txt数据转为列表 with open('james.txt') as jaf: data ...
- iOS MJRefresh上拉加载更多
1.导入MJRefresh包 2.在类中引入:#import "MJRefresh.h" 3.添加footerView 添加加载更多的UI样式: MJRefreshAutoNorm ...
- [编织消息框架][netty源码分析]9 Promise 实现类DefaultPromise职责与实现
netty Future是基于jdk Future扩展,以监听完成任务触发执行Promise是对Future修改任务数据DefaultPromise是重要的模板类,其它不同类型实现基本是一层简单的包装 ...
- thinkinginjava学习笔记09_内部类
定义与创建 将一个类定义放在另一个类.方法.作用域.匿名类等地方,就是内部类:内部类只能由外部类对象创建(通过外部方法或者.new方法),内部类对象创建时必须已经有一个外部类对象,并且与之连接(在内部 ...
- Optimize For Ad Hoc Workloads
--临时工作负载优化 即席查询:也就是查询完没放到Cache当中,每次查询都要重新经过编译,并发高的时候很耗性能: 参数化查询: 一方面解决了重编译问题,但随着数据库数据数据的变更,统计信息的更新 ...