我想观察一些java bean类的某些字段所做的更改.
该字段是枚举类型.
要绑定字段和相应的ui控件我将PropertyChangeListener按照此处所述使用
但似乎javaFX没有等效的枚举属性类型.像javafx.beans.property.EnumProperty
我试图使用的东西StringProperty,ObjectProperty但它不起作用.
更新:添加了sscce
Observable.java
package sample;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
public class Observable {
protected PropertyChangeSupport propertyChangeSupport = null;
public Observable() {}
public void setObservableObject (Observable observable) {
propertyChangeSupport = new PropertyChangeSupport(observable);
}
public void addPropertyChangeListener(PropertyChangeListener listener){
System.out.println("added PropertyChangeListener");
propertyChangeSupport.addPropertyChangeListener(listener);
}
}
Run Code Online (Sandbox Code Playgroud)
Item.java
package sample;
public class Item extends Observable {
public enum State {
INIT, STARTED
}
private String name;
private State state = …Run Code Online (Sandbox Code Playgroud) 最近我发现kafka消费者需要大量的内存。
为了进行测试,我刚刚在本地启动了一个监听单个主题的单线程消费者。主题有 4 个分区。Kafka 只有一名经纪人。
我只从制作人那里发送了 10 条小消息(当时是晚上 11:44:30 左右,请参阅我在链接中附加的图片)。从那时起,没有人再向该主题发送任何消息。从那时起,我一直在图表上看到消费者轮询工作期间内存消耗不断增长。线路不断增长,直到 GC 未被调用。消费者只发送轮询请求,不返回任何内容,但需要大量内存。
我认为这是个问题。我尝试进行一些调整,即将一些参数配置为 FETCH_MAX_BYTES_CONFIG/MAX_PARTITION_FETCH_BYTES_CONFIG/MAX_POLL_RECORDS_CONFIG 但实际上没有任何结果。
SSCCE:
卡夫卡消费者配置:
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.common.serialization.ByteArrayDeserializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.kafka.annotation.EnableKafka;
import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
import org.springframework.kafka.core.ConsumerFactory;
import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
import org.springframework.kafka.listener.AbstractMessageListenerContainer;
import java.util.HashMap;
import java.util.Map;
@Configuration
@EnableKafka
public class KafkaConsumerConfig {
@Bean
public ConcurrentKafkaListenerContainerFactory<String, byte[]> kafkaListenerContainerFactory() {
ConcurrentKafkaListenerContainerFactory<String, byte[]> factory
= new ConcurrentKafkaListenerContainerFactory<>();
factory.setConcurrency(1);
factory.setConsumerFactory(consumerFactory());
factory.getContainerProperties().setAckMode(AbstractMessageListenerContainer.AckMode.MANUAL);
return factory;
}
private ConsumerFactory<String, byte[]> consumerFactory() {
return new DefaultKafkaConsumerFactory<>(consumerProperties());
}
private Map<String, Object> consumerProperties() {
final Map<String, Object> …Run Code Online (Sandbox Code Playgroud) 我正在使用Spring4开发RESTful应用程序.我想在POST请求中没有传递正文时处理大小写.我写自定义异常处理程序:
@ControllerAdvice
public class MyRestExceptionHandler {
@ExceptionHandler
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ResponseEntity<MyErrorResponse> handleJsonMappingException(JsonMappingException ex) {
MyErrorResponse errorResponse = new MyErrorResponse("request has empty body");
return new ResponseEntity<MyErrorResponse>(errorResponse, HttpStatus.BAD_REQUEST);
}
@ExceptionHandler(Throwable.class)
public ResponseEntity<MyErrorResponse> handleDefaultException(Throwable ex) {
MyErrorResponse errorResponse = new MyErrorResponse(ex);
return new ResponseEntity<MyErrorResponse>(errorResponse, HttpStatus.BAD_REQUEST);
}
}
@RestController
public class ContactRestController{
@RequestMapping(path="/contact", method=RequestMethod.POST)
public void save(@RequestBody ContactDTO contactDto) {...}
}
Run Code Online (Sandbox Code Playgroud)
但是当它发生时,这些方法将不会被调用.我刚收到400 BAD REQUEST http状态和空身的响应.有人知道如何处理吗?
我正在编写一个桌面Spring Boot和Data-JPA应用程序。
初始设置来自application.properties(某些spring.datasource.*和spring.jpa.*)
。我的程序的功能之一是可以通过ui指定数据库设置(rdbms类型,主机,端口,用户名,密码等)。
这就是为什么我想在运行时重新定义已经初始化的数据库属性。这就是为什么我正在寻找一种方法来做到这一点。
我尝试执行以下操作:
1)我编写了自定义DbConfig,其中DataSource在Singleton Scope中声明了bean。
@Configuration
public class DBConfig {
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
@Scope("singleton")
@Primary
public DataSource dataSource() {
return DataSourceBuilder
.create()
.build();
}
}
Run Code Online (Sandbox Code Playgroud)
2)在一些DBSettingsController中,我得到了这个bean的实例并更新了新的设置:
public class DBSettingsController {
...
@Autowired DataSource dataSource;
...
public void applySettings(){
if (dataSource instanceof org.apache.tomcat.jdbc.pool.DataSource){
org.apache.tomcat.jdbc.pool.DataSource tomcatDataSource = (org.apache.tomcat.jdbc.pool.DataSource) dataSource;
PoolConfiguration poolProperties = tomcatDataSource.getPoolProperties();
poolProperties.setUrl("new url");
poolProperties.setDriverClassName("new driver class name");
poolProperties.setUsername("new username");
poolProperties.setPassword("new password");
}
}
}
Run Code Online (Sandbox Code Playgroud)
但这没有效果。使用初始初始化的DataSource属性,Spring数据存储库是精钢的。
我也听说过Spring Cloud …
我在Spring Data JPA存储库中使用本机SQL查询,并且想在upsert后返回自动生成的ID。看起来像下面的类似片段:
public interface EntityRepository extends CrudRepository<Entity, Integer> {
@Modifying
@Transactional
@Query(value = "INSERT INTO entity (name, age) VALUES(?1,?2) " +
"ON CONFLICT(name) DO UPDATE SET name=?1,age=?2 " +
"RETURNING id", nativeQuery = true)
Integer upsert(String name, int age);
}
Run Code Online (Sandbox Code Playgroud)
执行后,我得到下一个PSQLException:
Caused by: org.postgresql.util.PSQLException: A result was returned when none was expected.
at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:141)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:175)
Run Code Online (Sandbox Code Playgroud)
因此,问题出在这里:
org.postgresql.jdbc.PgPreparedStatement:
public int executeUpdate() throws SQLException {
executeWithFlags(QueryExecutor.QUERY_NO_RESULTS);
ResultWrapper iter = result;
while (iter != null) {
if …Run Code Online (Sandbox Code Playgroud) 我想知道是否有办法将某些转换(即旋转)应用于设置为某个按钮的图像.我用css通过这种方式指定所有图像:
.custom-button {
-fx-graphic: url("imgs/buttons/button.png");
...
}
.custom-button:hover {
-fx-graphic: url("imgs/buttons/button_hover.png");
...
}
.custom-button:selected {
-fx-graphic: url("imgs/buttons/button_selected.png");
...
}
Run Code Online (Sandbox Code Playgroud)
我想在css中指定这样的转换.我怎样才能做到这一点?我想找到类似的东西:
.custom-button .graphic {
-fx-rotate: 90;
}
Run Code Online (Sandbox Code Playgroud) 我正在使用 liquibase 作为我当前项目的迁移工具。
问题是我正在尝试使用自定义序列为实体自动生成 id,但发生了错误。
我定义了一个实体表和自定义序列,如下所示:
<databaseChangeLog>
<changeSet id="create_orders_table" author="I am">
<createTable tableName="ORDERS">
<column name="id" type="SERIAL" valueComputed="SEQ_ORDERS.NEXTVAL" valueSequenceCurrent="SEQ_ORDERS.CURRENT" valueSequenceNext="SEQ_ORDERS.NEXTVAL" defaultValueSequenceNext="SEQ_ORDERS.NEXTVAL">
<constraints primaryKey="true" unique="true"/>
</column>
<column name="number" type="VARCHAR(64)"/>
...
</createTable>
</changeSet>
<changeSet id="add_sequence" author="I am">
<createSequence sequenceName="SEQ_ORDERS" cycle="false" minValue="1" maxValue="9223372036854775807" startValue="1" incrementBy="1"/>
</changeSet>
</databaseChangeLog>
Run Code Online (Sandbox Code Playgroud)
但是当应用此迁移时,我在 postgresql 中看到以下表结构:
CREATE TABLE public.orders
(
id integer NOT NULL DEFAULT nextval('orders_id_seq'::regclass),
"number" character varying(64),
...
CONSTRAINT pk_orders PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
Run Code Online (Sandbox Code Playgroud)
对我来说,第一件不可预知的事情是为什么 liquibase 写的是它自己的orders_id_seq而不是我的SEQ_ORDERS?
接下来我编写了一个典型的 JPA 代码并使用 …
如果我通过发布向某个通道(IPC 或 UDP)提供消息,并且此操作返回正值(新位置),这意味着数据是否已写入磁盘(fsynced 到 /dev/shm)?换句话说... Aeron 是否依赖页面缓存?当我通过发布提供新数据并收到积极的响应值后操作系统关闭时,我可能会丢失数据吗?
java ×6
spring-boot ×3
javafx ×2
javafx-8 ×2
postgresql ×2
spring ×2
aeron ×1
apache-kafka ×1
javafx-css ×1
liquibase ×1
rest ×1
spring-4 ×1
spring-data ×1
spring-kafka ×1