我正在尝试使用Spring Boot在本地设置DynamoDB.最初我使设置工作,并能够通过存储库写入/保存到DynamoDB.从那时起,我添加了更多类来构建我的应用程序.现在当我尝试启动我的应用程序时,我得到以下异常:
org.springframework.beans.factory.support.BeanDefinitionOverrideException: Invalid bean definition with name 'agentRepository' defined in null: Cannot register bean definition [Root bean: class [org.socialsignin.spring.data.dynamodb.repository.support.DynamoDBRepositoryFactoryBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] for bean 'agentRepository': There is already [Root bean: class [org.socialsignin.spring.data.dynamodb.repository.support.DynamoDBRepositoryFactoryBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] bound.
我已经广泛搜索了SO和互联网,但没有任何有用的解决方案.错误消息也具有误导性.
我的项目具有以下层次结构
ai.test.as
- as
- agent
- business
- intent
- exception
- Agent.java
- AgentDTO.java
- AgentRespository.java
- AgentController.java
- AgentService.java
- AgentServiceImpl.java
- config …Run Code Online (Sandbox Code Playgroud) Hibernate 实体是否与域模型相同?
请参阅以下示例。
方法 1 - 域模型和实体是同一个类。域模型“是一个”实体
@Entity
@Table(name = "agent")
class Agent
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "agent_number", unique = true, nullable = false)
private String agentNumber;
@Column(name = "agent_name", nullable = false)
private String agentName;
// Busines logic methods
}
Run Code Online (Sandbox Code Playgroud)
方法 2 - 域和实体是不同的功能。域模型“有一个”实体
class Agent
{
// Hibernate entity for this domain model
private AgentEntity agentEntity;
// Getters and setters to set the agentEntity attributes
// Business logic
}
Run Code Online (Sandbox Code Playgroud)
从以上2种方法中,哪一种是实现DDD的正确方法?我相信方法 …
我目前正在使用下一个opensll命令签署数据:
openssl dgst -sign key.pem -sha256 -out signature.sig data.txt
Run Code Online (Sandbox Code Playgroud)
我怎样才能用Python实现这一目标?
假设我是以下课程;
class CompositionClass(object):
def __init__(self):
self._redis = Redis()
self._binance_client = BinanceClient()
def do_processing(self, data):
self._redis.write(data)
self._binance_client.buy(data.amount_to_buy)
# logic to actually unittest
return process_val
Run Code Online (Sandbox Code Playgroud)
我有其他对象调用外部 API 作为我的ComplexClass. 当我对 的逻辑进行单元测试时do_processing,我不想调用这些昂贵的 API 调用。我已经在 SO 和 Google 中彻底检查了单元测试;所有的例子都很简单,并不是很有用。在我的情况下,我如何使用unittest.mock来模拟这些对象?
顾名思义,设计服务层时的最佳实践是什么?我确实知道服务层应始终返回DTO,以便将域(实体)对象保留在服务层内。但是,控制器对服务层的输入应该是什么?
我在下面提出了三个建议:
方法1:在这种方法中,域对象(项)保留在服务层中。
class Controller
{
@Autowired
private ItemService service;
public ItemDTO createItem(IntemDTO dto)
{
// service layer returns a DTO object and accepts a DTO object
return service.createItem(dto);
}
}
Run Code Online (Sandbox Code Playgroud)
方法2:这是服务层接收自定义请求对象的地方。我已经在AWS Java SDK和Google Cloud Java API中广泛地看到了这种模式
class Controller
{
@Autowired
private ItemService service;
public ItemDTO createItem(CreateItemRequest request)
{
// service layer returns a DTO object and accepts a custom request object
return service.createItem(request);
}
}
Run Code Online (Sandbox Code Playgroud)
方法3:服务层接受DTO并返回域对象。我不喜欢这种方法。但是它已在我的工作场所中广泛使用。
class Controller
{
@Autowired
private ItemService service;
public ItemDTO createItem(CreateItemRequest request)
{
// …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用此处给出的构建指令为一个简单的protobuf 示例生成代码。我已经尝试了一段时间,但在源根目录中看不到任何自动生成的代码。
以下是我的build.gradle档案
buildscript {
ext {
springBootVersion = '2.0.4.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath "io.spring.gradle:dependency-management-plugin:1.0.3.RELEASE"
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.5'
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'com.google.protobuf'
group = 'io.ai.vivid'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencyManagement {
imports {
mavenBom 'com.amazonaws:aws-java-sdk-bom:1.11.228'
}
}
protobuf {
protoc {
artifact = "com.google.protobuf:protoc:3.5.1-1"
}
generateProtoTasks.generatedFilesBaseDir = 'generated-sources'
plugins …Run Code Online (Sandbox Code Playgroud) 我目前已在 VPC 的私有子网中创建了一个 RDS 实例。现在我想创建一个具有一些权限和授权的用户。为此,我使用TF 中的mysql_user和mysql_grants资源类型。由于我的实例位于私有子网中,因此 TF 代码无法作为 CI 管道的一部分执行来创建 Mysql 用户和授权。
据我了解,我有两个选择:
不要对用户和授权进行地形改造。而是通过堡垒主机登录 RDS 实例并手动创建用户。
在公有子网(db子网和公有子网)中创建RDS实例。然后使用 TF 创建用户并授予权限。修改数据库实例并将其移动到私有子网。
我更倾向于不做。2 因为一切都是代码并且可重复。但想知道是否有更好的方法来实现这一目标。
Java 8引入了OptionalAPI来表示可能null在运行时使用的值。在以下情况下,是否最好抛出一个已检查的异常或返回一个Optional返回类型来表示边缘情况?
情况1:返回类型 Optional
private Optional<Item> getItem(String itemName)
{
for (Item item : items)
{
if (item.getName().equals(itemName))
return Optional.of(item);
}
return Optional.empty();
}
Run Code Online (Sandbox Code Playgroud)
情况2:引发检查异常
private Item getItem(String itemName) throws ItemNotFound
{
for (Item item : items)
{
if (item.getName().equals(itemName))
return item;
}
throw new ItemNotFound();
}
Run Code Online (Sandbox Code Playgroud)
正如Martin Fowler所主张的那样,Optional/特殊情况模式是一种更好的做法,但是在这种简单的情况下,抛出一个受检查的异常也可以做到。
我应该关注哪一个?
我正在尝试在 AWS 中创建具有多个子网的 VPC。我很确定我已经掌握了 CIDR 的概念来屏蔽网络和可用主机。
不幸的是,每当我尝试设计 VPC 时,我都会遇到错误。这是我的 VPC 设计:
错误:
必须是有效的 CIDR 块。你是说 10.0.0.0/16 吗?
然后由于错误,我将我的公共子网分配为 10.0.0.0/16。
然后我继续将我的专用网络创建为 10.0.1.0/16 - 我收到一个错误:
CIDR 块 10.0.1.0/16 与预先存在的 CIDR 块 10.0.0.0/16 重叠
我究竟做错了什么?我只想创建两个专用网络和一个公共网络。
我正在尝试使用 SpringBoot 设置本地 DynamoDB 实例。我正在关注这个,但是使用 Gradle。
当我尝试运行我的应用程序时,出现以下异常:
BeanCreationException: Error creating bean with name 'agentRepository': Could not resolve matching constructor (hint: specify index/type/name arguments for simple parameters to avoid type ambiguities)
我确实知道这是由于歧义而导致依赖注入失败,但我 AgentRepository作为无参数构造函数。不知道哪里有歧义。
以下是我的代码:
摇篮文件
buildscript {
ext {
springBootVersion = '2.1.1.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group = 'test.project'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
maven { …Run Code Online (Sandbox Code Playgroud) java ×4
spring-boot ×2
amazon-rds ×1
amazon-vpc ×1
cryptography ×1
dto ×1
entity ×1
exception ×1
gradle ×1
hibernate ×1
mocking ×1
mysql ×1
openssl ×1
optional ×1
python ×1
python-3.x ×1
rest ×1
spring ×1
spring-bean ×1
terraform ×1