Spring Boot相关
# 知识点
# Spring 配置文件
# Spring 配置文件优先级(从高到低)
文件优先级
- properties配置文件
- yml配置文件
- yaml配置文件
文件位置优先级
- 直接子目录/config
- 项目根目录/config
- 项目根目录
- classpath根config/
- classpath根目录下的
# 启动参数指定配置文件
# 精确读取外部配置文件
java -jar -Dspring.profiles.active=test xxx.jar
# 改变主配置文件名
java -jar foo.jar --spring.config.name=spring
# 使用指定目录
java -Dspring.profiles.active=test -jar comet-service/target/xxx.jar --spring.config.location=/tmp/
# 使用 optional,当目录路径不存在时不报错
java -Dspring.profiles.active=test -jar comet-service/target/xxx.jar --spring.config.location=optional:/tmp/
# spring.config.additional-location # 不会覆盖主配置文件中的设置,而是作为补充
# Spring Boot项目中读取application配置文件中配置
- 使用@Value方式
@Value("${spring.kafka.topic}")
private String topic;
- 使用Environment方式
@Autowired
private Environment env;
env.getProperty("spring.kafka.topic");
- @ConfigurationProperties(prefix = "") 注解
1、在application.yml中添加配置
application:
serverConfig:
address: localhost
port: 22
username: geiri
password: 12345678
2.建配置类
package com.pn.ebs.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "application")
public class ApplicationProperties {
private ServerConfig serverConfig = new ServerConfig();
public ServerConfig getServerConfig() {
return serverConfig;
}
public final class ServerConfig{
private String address;
private String port;
private String username;
private String password;
// geter/setter 此处略
}
}
# Spring Boot实体类时间格式化
// 返回时间格式
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
// 传入时间格式
@DateTimeFormat(pattern ="yyyy-MM-dd")
# 事务注解
Spring Boot中实现事务没有额外的Jar包,还是基本的数据库访问包,比如mybatis
注解事务@Transactional
@Service
public class PersonService {
@Resource
private PersonMapper personMapper;
@Resource
private CompanyMapper companyMapper;
@Transactional(rollbackFor = {RuntimeException.class, Error.class})
public void saveOne(Person person) {
Company company = new Company();
company.setName("tenmao:" + person.getName());
companyMapper.insertOne(company);
personMapper.insertOne(person);
}
}
注解属性
- rollbackFor:触发回滚的异常,默认是RuntimeException和Error
- isolation: 事务的隔离级别,默认是Isolation.DEFAULT也就是数据库自身的默认隔离级别,比如MySQL是ISOLATION_REPEATABLE_READ可重复读
这样就可以了,不需要其他配置。
ps:网络上还说要在@SpringBootApplication上添加注解@EnableTransactionManagement,已经不需要了
# 国内最好的maven repository
方法1:全局配置:修改maven根目录下的conf文件夹中的setting.xml文件,内容如下:
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
方法2:单项目配置: pom.xml文件里添加
<repositories>
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
===========================================
<repositories>
<repository>
<id>central</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<layout>default</layout>
<!-- 是否开启发布版构件下载 -->
<releases>
<enabled>true</enabled>
</releases>
<!-- 是否开启快照版构件下载 -->
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
# 有时间了解一下自动部署相关
# 其他
# 工作Spring + Strusts2 + EXTJS5
分层
- action层类似于controller
- service相当于service层
- BgdDataSource类似于dao层(负责与数据库交互,但是sql在service层作为参数传入)
配置文件
- Struts-Spring集成web.xml(未详细了解)
Spring监听器加载spring上下文文件
- Spring的配置文件applicationContext.xml
注册实体类Spring beans的路径,创建action
- struts.xml
配置action路径,与spring配置对应
EXT渲染流程
Ext.Panel为例(其他类似):
将一个Panel显示在浏览器中,其过程叫做render(渲染)。有这么几道工序:
第一、触发”beforeRender”事件
第二、得到这个Panel的父节点(针对DOM来说),即容器,也就是供Panel入住的那个容器
第三、设置rendered=true
第四、调用onRender方法,这步是最重要的,也就是如何将组件显示在浏览器上,涉及到很多流程,一会详解
第五、设置这个panel的css
第六、触发”render”事件,指的是当render完成后,触发的事件
第七、调用aferRender,这步和第四步一样,是很重要的流程之一
第八、看看要不要将这个panel隐藏或者失效,如果用户设置了hidden或者disable
第九、设置这个panel的位置,也就是doLayout,布局
EXT函数及选择器
// 1. $.post()方法
$.post("/xx/xx/xx.action", {
para: $.trim(code)
}, function (jsondata) {
if(jsondata.success){
}else{
}
}, "json")
// 2. 自加载函数
Ext.onReady(function () {});
// 3. EXT选择器 根据组件类型(xtype属性)获取组件
Ext.ComponentQuery.query();
// 实例
render : function (self){
Ext.query('textarea[name="ALARM_DESC"]')[0].outerHTML = "<div name = 'ALARM_DESC' style = 'background:#E6E6E6; width: 100%; height: 120px; padding: 4px 6px 3px 6px'>" + self.value + "</div>";
// document.getElementsByName("ALARM_DESC")[0].outerHTML = "<div name = 'ALARM_DESC' style = 'background:#E6E6E6; width: 100%; height: 120px; padding: 4px 6px 3px 6px'>" + self.value + "</div>";
Ext.get(Ext.query('div[name="ALARM_DESC"] a')).applyStyles('color:#0000FF');
// $('div[name="ALARM_DESC"] a').css("color", "#0000FF")
// a标签禁用
// Ext.get(Ext.query('div[name="ALARM_DESC"] a')).applyStyles('color: red; pointer-events: none;');
}
// 4. 获取表格选中行
[Grid].getSelectionModel().getSelection(); // 多行
[getGrid].getCurrentRecord(); // 单行
问题
- spring和struts2整合时:spring接管了action对象的创建,所以一定要在spring配置文件中配置action,这里需要注意的是配置
中的id时,要与struts.xml配置action中的 class一致 - EXT框架:后台返回时, "success"一定要返回true, 否则store不会刷新, 还是缓存的内容
- 要根据数据库里的字段生成a标签:ext尝试无果后, 选择在render事件中用document.xxx.outerHTML直接修改dom元素, 暂时未发现bug
编辑 (opens new window)
上次更新: 2024/09/10, 20:38:55