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#语言的各种 ...
随机推荐
- Android开发之常见事件响应方式
常见的事件有 (1)单击事件 onClickListener (2)长按事件 onLongClickListener (3)滑动事件 onTouchListener (4)键盘事件 onKeyLi ...
- iOS框架搭建(MVC,自定义TabBar)--微博搭建为例
项目搭建 1.新建一个微博的项目,去掉屏幕旋转 2.设置屏幕方向-->只有竖向 3.使用代码构建UI,不使用storyboard 4.配置图标AppIcon和LaunchImage 将微博资料的 ...
- VS源码编译QuaZip(Windows下)
最近写个Qt demo,想要使用压缩和解压多个文件的功能,并不使用额外进程.网上参考了很多资料,发现只有QuaZip比较适合我的需求.但是QuaZip只提供源码,因此需要自己来编译. QuaZip简介 ...
- Wincc flexable的画面浏览切换组态
1.新建项目和6个画面 2.双击导航控件设置,选择默认设置 3.使用画面浏览编辑器编辑画面层次切换关系,拖拽画面到编辑器中进行关系连接 4.保运并运行
- 'boost/iterator/iterator_adaptor.hpp' file not found之xcode生成时报错的解决方案
xcode生成rn(0.49.3)项目的时候出现“'boost/iterator/iterator_adaptor.hpp' file not found之xcode”报错. 原因: /Users/x ...
- 598. Range Addition II
Given an m * n matrixMinitialized with all0's and several update operations. Operations are represen ...
- 回顾2017系列篇(一):最佳的11篇UI/UX设计文章
2017已经接近尾声,在这一年中,设计领域发生了诸多变化.也是时候对2017年做一个总结,本文主要是从2017设计文章入手,列出了个人认为2017设计行业里最重要的UI/UX文章的前11名,供大家参考 ...
- ES6 函数的扩展(1)
1. 函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,为了避免这个问题,通常需要先判断一下参数y是否被赋值,如果没有,再等于默认值. ES6允许为函数的参数设置默认值,即直接 ...
- Linux_异常_08_本机无法访问虚拟机web等工程
这是因为防火墙的原因,把响应端口开启就行了. # Firewall configuration written by system-config-firewall # Manual customiz ...
- Weblogic用户名密码获取
1.获取服务器上的Weblogic用户名.密码 工具:Xshell 第一步:连接至服务器上,新建目录: mkdir /scripts/DecryptionDemo 第二步:将Decrypt.java放 ...