在构建我的第一个Spring Boot应用程序时,我发现每次在/resources/static/some-file.js中更改Javascript文件时都需要重新启动我的应用程序
这非常耗时.
当我将文件移动到/ webapps /文件夹时,它按预期工作,但文件未打包在JAR中.文档提到了这一点,所以我无法继续这样做.
我阅读了所有内容spring-boot-devtools
,并将其安装在我的POM中,但是hotswapping并没有接缝工作.我仍然需要重新启动整个应用程序以查看Javascript或CSS文件更改.
当应用程序启动时,我可以看到该行LiveReload server is running on port 35729
,所以spring-boot-devtools
必须做某事......
进一步调查出现问题的步骤是什么?
我的猜测是,当IntelliJ运行应用程序时,文件被复制,所以当我进行更改时,我实际上是在更改原始文件而不是正在运行的应用程序使用的文件.
PS:我正在使用嵌入式Tomcat服务器的Maven,IntelliJ IDEA 15和Spring Boot 1.3.3.我不确定IntelliJ运行什么命令来启动应用程序.IDE正在"自动"处理此问题.也许我需要改变我的运行配置?
今天我从具有独立java配置依赖性的Spring Security 3.1.4升级到包含java config的新3.2.0版本.CSRF默认打开,我知道我可以在我的重写配置方法中使用"http.csrf().disable()"禁用它.但是假设我不想禁用它,但我需要在登录页面上使用CSRF令牌,其中没有使用JSP标记库或Spring标记库.
我的登录页面纯粹是HTML,我在使用Yeoman生成的Backbone应用程序中使用.我如何在表单中或作为标题包含HttpSession中包含的CSRF令牌,这样我就不会得到"未找到预期的CSRF令牌.您的会话是否已过期?" 例外?
这个问题与这个问题有关(Spring boot @ResponseBody没有序列化实体id).我观察到,在将应用程序迁移到Spring Boot并使用spring-boot-starter-data-rest依赖项后,我的实体@Id字段不再在生成的JSON中进行编组.
这是我的请求映射,在调试时,我可以看到数据在返回之前没有被更改,因此@Id属性稍后被剥离.
@RequestMapping(method = RequestMethod.GET, produces = {"application/json"})
public PagedResources<Receipt> receipts(Pageable pageable, PagedResourcesAssembler assembler) {
Page<Receipt> receipts = receiptRepository.findByStorerAndCreatedDateGreaterThanEqual("003845", createdStartDate, pageable);
PagedResources<Receipt> pagedResources = assembler.toResource(receipts, receiptResourceAssembler);
return pagedResources;
}
Run Code Online (Sandbox Code Playgroud)
是否有一个设置允许我在生成的JSON中保留@Id字段,因为我的应用程序允许用户按该值进行搜索.
谢谢 :)
如果我有一个如下定义的C3JS分组条形图,我怎么能让这些分段保持在我定义它们的顺序而不是按值按升序排列?默认情况下,C3会将它们命令为5,10,40,但我希望它保持为10,40,5.
c3.generate({
bindto: '.active-loads',
data: {
columns: [
['Picking up future', 10],
['Enroute', 40],
['Delivered', 5]
],
type: 'bar',
groups: [
['Picking up future', 'Enroute', 'Delivered']
],
onclick: function(d) {
console.debug(d);
}
},
axis: {
rotated: true,
x: {
show: false
}
}
});
Run Code Online (Sandbox Code Playgroud)
编辑
事实证明它就像order: null
在data
属性中指定一样简单.
我是第一次尝试Webpack.我已经使用Gulp和Browserify一段时间了,我对它很满意.在这一点上,我只是测试了几个Webpack插件.即compress-webpack-plugin.我之前从未使用压缩,所以如果我犯了任何noob错误,请耐心等待.
下面是我的webpack.config.js.结果是我得到了main.js,main.js.gz,main.css和index.html.main.js被注入index.html,但是如果我在浏览器中打开index.html,它会提供未压缩的main.js,而不是压缩的main.js.gz. 我已经读过我不需要在我的脚本标记中包含.gz扩展名,并且html-webpack-plugin不包含它,所以我认为事情正常,但未提供压缩的main.js,而不是压缩的.
var path = require('path');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var CompressionPlugin = require('compression-webpack-plugin');
module.exports = {
entry: './app/scripts/main.js',
output: {
path: path.join(__dirname, 'public'),
filename: '[name].js',
chunkFilename: '[id].js'
},
module: {
loaders: [
{test: /\.scss$/, exclude: /node_modules/, loader: ExtractTextPlugin.extract('style-loader', 'css-loader!sass-loader')},
{test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader'}
]
},
plugins: [
new HtmlWebpackPlugin({
hash: true,
template: 'app/index.html',
inject: 'body'
}),
new ExtractTextPlugin('[name].css'),
new CompressionPlugin()
]
};
Run Code Online (Sandbox Code Playgroud) 如果我有一个如下所示的存储库设置,使用Spring Data REST,我可以访问/ receipts中的数据并查看所有数据.但是,我只想为用户返回数据.我有一个自定义查找程序"findByStorer",它会这样做.我如何让Spring Data REST使用它并从用户那里获取storer值而不是指定查询参数?
@RepositoryRestResource(collectionResourceRel = "receipts", path = "receipts")
public interface ReceiptRepository extends PagingAndSortingRepository<Receipt, BigDecimal> {
@Query
public Page<Receipt> findByStorer(String storer, Pageable pageable);
}
Run Code Online (Sandbox Code Playgroud)
我还没有实现任何安全性,所以这个问题目前比实践更具理论性.
谢谢.
在我的Spring应用程序中,我有一个Couchbase存储库,用于文档类型QuoteOfTheDay
.该文档非常基础,只有一个类型为UUID的id字段,类型为String的值字段,以及类型为Date的创建日期字段.
在我的服务类中,我有一个返回当天随机引用的方法.最初我尝试简单地执行以下操作,返回一个类型的参数Optional<QuoteOfTheDay>
,但似乎findAny()几乎总是返回流中的相同元素.目前只有大约10个元素.
public Optional<QuoteOfTheDay> random() {
return StreamSupport.stream(repository.findAll().spliterator(), false).findAny();
}
Run Code Online (Sandbox Code Playgroud)
由于我想要更随机的东西,我实现了以下只返回一个QuoteOfTheDay
.
public QuoteOfTheDay random() {
int count = Long.valueOf(repository.count()).intValue();
if(count > 0) {
Random r = new Random();
List<QuoteOfTheDay> quotes = StreamSupport.stream(repository.findAll().spliterator(), false)
.collect(toList());
return quotes.get(r.nextInt(count));
} else {
throw new IllegalStateException("No quotes found.");
}
}
Run Code Online (Sandbox Code Playgroud)
我只是很好奇findAny()
Stream 的方法是如何实际工作的,因为它似乎不是随机的.
谢谢.
我有2个文件在更改视图中不会消失.如果我查看diff,它只是告诉我提交的版本有LF行结尾,本地版本有CRLF行结尾.我在Mac上工作,我理解基于Linux的系统使用LF线路结尾,Windows使用CRLF.有没有我可以只转换这两个文件所以所有行结尾都是LF?
谢谢.
我刚刚注意到,当我在IDEA中有未版本控制的文件或整个目录时,如果我通过右键单击并选择忽略来指定忽略这些文件或目录,则它们不会添加到.gitignore中.
IDEA如何管理该列表呢?它似乎认识到.gitignore的变化,那么为什么不将忽略的文件添加到.gitignore呢?我只是想如果有人问我的回购,或者我开始与另一个开发人员合作,他们可能推送我要求IDEA忽略的文件.
谢谢.
我用来定义私有的前缀为'm'的成员变量.例:
private boolean mDone;
Run Code Online (Sandbox Code Playgroud)
getter/setter通常如下所示:
public boolean getDone() }
return mDone;
}
public void setDone(boolean done) {
mDone = done;
}
Run Code Online (Sandbox Code Playgroud)
Intellij IDE确实有一种创建这些getter/setter的方法,但是它将'm'前缀添加到getter/setter方法的名称中.有办法防止这种情况吗?
java ×4
spring ×4
git ×2
javascript ×2
spring-boot ×2
spring-mvc ×2
c3.js ×1
charts ×1
compression ×1
gzip ×1
html ×1
java-8 ×1
java-stream ×1
json ×1
rest ×1
webpack ×1