我有zip文件,其中包含一些其他的zip文件.
例如,邮件文件abc.zip
,它包含xyz.zip
,class1.java
,class2.java
.并xyz.zip
包含文件class3.java
和class4.java
.
所以,我需要提取使用Java应包含一个文件夹中的zip文件class1.java
,class2.java
,class3.java
和class4.java
.
Martin Fowler认为Anemic Domain Model是一种反模式.
由于Object Relational Impedence Missmatch,将持久性模型作为域模型滚动似乎也很严重.对于持久性和规范化的问题,我们倾向于将类分解为非常小的小块,在这些类之上打字方法是愚蠢的.加上持久性很少发生变化,但业务逻辑变化很大.
所以我们需要一个基于持久性模型构建的DomainModel(而不是同一个).然后,此域模型将包含业务逻辑属性和方法.
但是现在这些领域模型仍然落后于服务,为了将它们暴露给外部世界,我们需要将它们转换为DTO.
我们在这里做的是manny mappings.
它不会在那里结束,因为DTO可能需要映射到ViewModel.
所有这些以及重复验证逻辑的问题仍然没有消失,因为客户需要实时验证.ViewModel对验证一无所知,因此在SPA中,您不得不在客户端(通常使用javascript)再次重写验证逻辑.
服务本质上是无状态的(消息或面向RPC),所以我们在Persistence,OO之间进行所有这些映射,然后返回到Procedural,有什么好处?您如何证明大多数IT预算的实际成本?
我知道如何拥有完整的DDD,使用Aggregate Roots,Domain Models等会很"酷",但你怎么能证明成本和开发效率的打击?
反模式(或反模式)是社交或商业运营或软件工程中使用的模式,可能是常用但在实践中无效和/或适得其反
如果是这样,DDD和Rich Domain Model不会适合上面的反模式定义而不是"精益"域模型.对不起,我鄙视加载的单词"Anemic".
通过保持域模型,"精益"你实际上允许它被共享而不违反"抽象依赖原则","不要重复自己"以及将一个数据载体映射到另一个数据载体的耗时,繁琐且容易出错的过程,以及除此之外的任何相关单元测试(除非您考虑使用单元测试进行映射并希望获得最佳效果).
architecture design-patterns domain-driven-design anti-patterns
在我的业务逻辑中,我必须处理大量实体 ID,它们全部都是String类型,这可能会导致混乱,尤其是当您将其中几个作为方法参数传递时。所以我考虑通过内联类引入一点类型安全性。我知道,内联类在 v1.3 中仍然被标记为实验性的。尽管如此,有没有人尝试过在数据库映射上下文中使用内联类作为@Id属性,在我的例子中是带有 Spring Data 的 MongoDB。
@Entity
class User {
@Id
var id: UserId
}
Run Code Online (Sandbox Code Playgroud)
和
inline class UserId(val id: String)
Run Code Online (Sandbox Code Playgroud)
我猜底层属性没有拆箱,所以 _id 最终会作为数据库中的对象?Spring 的 CrudRepository 接口又如何呢?它似乎可以编译,但最终会起作用:
interface UserRepository : CrudRepository<User, UserId>
Run Code Online (Sandbox Code Playgroud)
可能使用AttributeConverter
将内联类转换为原语可以完成这项工作。有这方面的经验吗?
domain-driven-design mongodb kotlin spring-data-mongodb kotlin-inline-class
我有一个委托组件,除了通过路径(例如/tournament/:id
)中的ID解析对象、检测锦标赛的类型并转发(通过router.navigate(..)
)到另一条路线(例如/tournament/:id/league
)之外,什么也不做。
问题是浏览器后退按钮将返回到委托组件并显示我的委托组件的空模板。
router.navigate
除了考虑以下因素之外,是否还有其他选项可以转发到另一个组件:
/tournament/:id/league
应该反映在浏览器 URL 中关于data
类,禁止在主构造函数中不使用var
或val
关键字,即每个参数都隐式转换为类属性。但是,有时我不希望每个参数都变成类属性。
因此,据我所知,没有机会在主构造函数中传递只能在构造函数中访问并且在实例构造完成后被遗忘的参数。这有充分的理由吗?
我认为解决这个问题的唯一方法是不使用data
类或使用允许非 var/val 前缀变量的辅助构造函数。然而,有很多需要传递的参数,二级构造函数会极大地膨胀类。当然,我可以将所有参数包装到另一个对象中,但这只会将问题转移到另一个地方。
是否有推荐的方法或模式来应对?
在 Java 中,我可以修改final
构造函数中的成员。请看下面的例子
class Scratch {
private final String strMember;
public Scratch(String strParam) {
this.strMember = strParam.trim();
}
}
Run Code Online (Sandbox Code Playgroud)
Kotlin 有没有办法在val
构造过程中修改成员,在这种情况下,trim()
在将参数值分配给字段之前修改成员。
如果没有,在不产生太多开销的情况下,推荐的解决方法是什么?
我有点困惑为什么这不起作用。我有一个简单Iterable
的问题String
,我想通过toSortedSet()
自己的方式进行排序。我想像这样将 lambda 传递给它:
myStringIterable.toSortedSet({a,b -> a.compareTo(b)})
Run Code Online (Sandbox Code Playgroud)
然而,这似乎不起作用。错误说
类型不匹配。必需的 kotlin.Comparator <String>
找到:(String,String) -> Int
Comparator 是一个Functional Interface,所以我应该能够将它作为 Lambda 传递,不是吗?
我正在使用 Spring Boot 来实现 Spark 应用程序。我构建了一个 uber jar,并使用 Spark-submit 来执行该应用程序。但我得到了以下异常:
18/06/05 15:32:37 错误 SpringApplication:应用程序运行失败 org.springframework.beans.factory.BeanCreationException:创建类路径资源中定义的名为“gsonBuilder”的 bean 时出错 [org/springframework/boot/autoconfigure/gson/ GsonAutoConfiguration.class]:通过工厂方法实例化Bean失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 [com.google.gson.GsonBuilder]:工厂方法“gsonBuilder”抛出异常;嵌套异常是 java.lang.BootstrapMethod
错误:java.lang.NoSuchMethodError:com.google.gson.GsonBuilder.setLenient()Lcom/google/gson/GsonBuilder; 在 org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:587) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1254) 在 org.springframework.beans.factory .support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1103) .....
即使我将以下依赖项放入我的pom.xml
:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
<scope>compile</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个依赖问题?
我正在运行时创建 Angular 代码,特别是,我使用 SVG 库来创建一个矢量图形,其中包含 Angular 代码指令,如(click)='myMethod()'
,反过来,调用我在 SVG 封闭组件中静态定义的方法。在运行时生成我需要编译创建的模板并将其添加到组件中。我当时在这篇文章的帮助下用 Angular 3 实现了这样的代码,这篇文章非常繁琐。我尝试在 Angular 8 应用程序中复制旧代码:
private addComponent(template: string) {
@Component({template: template + ' <div #target></div>'})
class TemplateComponent {
@ViewChild('target', {static: false, read: ViewContainerRef}) public target;
constructor() {
}
public myMethod() {
// do something
}
}
@NgModule({declarations: [TemplateComponent]})
class TemplateModule {
@ViewChild('target', {static: false, read: ViewContainerRef}) public target;
}
// ERROR in next line:
const mod = this.compiler.compileModuleAndAllComponentsSync(TemplateModule);
const factory = mod.componentFactories.find((comp) =>
comp.componentType …
Run Code Online (Sandbox Code Playgroud) 我在Angular2和Spring-MVC中构建了一个应用程序,当我尝试向我的服务器发出POST请求时,我没有任何成功或失败的迹象,但请求没有发生,因为我看不到新的数据.当我从Postman做请求时 - 请求成功,我可以看到新数据.
Angular2代码:
import { Injectable } from '@angular/core';
import { Http, Response, Headers, RequestOptions } from '@angular/http';
import { Observable } from 'rxjs/Rx';
import 'rxjs/add/operator/map';
@Injectable()
export class MainContentService {
constructor(
private http: Http) {}
addNewCategory(categoryName: string) {
let body = JSON.stringify({ name: categoryName });
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
console.log(body);
console.log(options);
return this.http.post('http://localhost:8080/api/v1/categories', body, options)
.map(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json(); …
Run Code Online (Sandbox Code Playgroud) 在Student类中,构造函数是用一些值编写的。我想在VIP列中打印是或否。即当布尔值为时为“是” true
,反之亦然。
public class Student {
private String firstName;
private String lastName;
private boolean goldCustomer;
public Student(String firstName, String lastName, boolean goldCustomer) {
super();
this.firstName = firstName;
this.lastName = lastName;
this.goldCustomer = goldCustomer;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public boolean isGoldCustomer() {
return goldCustomer;
}
public void …
Run Code Online (Sandbox Code Playgroud) 从Transformation
包含用户的可空对象列表中,我想要非空用户的非空ID.有没有办法缩短这个表达方式?
val list: List<Transformation> = ...
list.filter {t -> t.user!!.id !== null }.map { t -> t.user!!.id!! }
Run Code Online (Sandbox Code Playgroud) kotlin ×5
angular ×3
java ×3
constructor ×2
spring ×2
angular8 ×1
apache-spark ×1
architecture ×1
back-button ×1
data-class ×1
filter ×1
final ×1
http ×1
java-ee ×1
jsp ×1
lambda ×1
mapping ×1
mongodb ×1
oop ×1
redirect ×1
router ×1
selenium ×1
spring-boot ×1
unzip ×1