需求入门 - 获取需求方法:Nine Boxes

九宫格访谈法是一种系统化的需求收集方法,通过定义问题、标识涉众和描述愿景三个维度,结合开放式、封闭式及确认式提问,帮助产品经理更好地理解用户需求。

 在《需求入门: 需求工程=需求开发+需求管理》中介绍过,需求开发中可以通过用户访谈进行问题获取,本篇介绍一个进行用户访谈的方法:Nine Boxes

  9格方法通过三个方面(列)和三种提问方式(行)组合成9个格子,它要求我们按照上图的数字顺序来进行,对每个问题进行沟通,可以把以前没有系统化的访谈方式更好的组织起来,帮助我们整理和清晰谈到的内容。

三个方面

  1. 定义问题
    这可以帮助客户确定问题,一起讨论。可以从组织结构、岗位职责等了解总体的工作情况,对于具体问题,可以更有针对性的设计问题。
  2. 标识涉众
    产品解决的价值一定是与人相关的,这可以很好的把涉众标识出来。
  3. 描述愿景
    这可以初步确定产品成功的目标,注意,这里不会谈到具体的问题解决方案,而只是一旦问题得到解决后,会有什么样的场景。

三种提问方式

  1. Open
    这类问题属于开放式问题,可以这样提出来,”告诉我...“,”请描述一下...“”这样发生什么了?“等故事情节问题
  2. Control
    这类问题属于封闭式问题,如多少(如一张入库单有多少条明细)、什么频度(如多久填写一个单子)、在哪里等一些事实问题
  3. Confirm
    这个步骤很重要,因为有可能会引起对方思考之前他没有提及的事情。如果发生这种情况,你应该返回之前的步骤重新开始。

用户故事

  当我们使用9格访谈后,会发现这些内容可以直接应用在用户故事中。在《Scrum 之 roduct Backlog》中我简单讲了一下在Scrum方法中如何描述用户故事的一般写法是:作为【用户的类型】,我希望可以【先这样做,然后那样做,就应该得到...的结果】以便【业务价值】。

为客户着想

  在进行访谈过程时,我们需要做到的三个方面是:为客户着想,了解客户期望和积极倾听。

  下面一副漫画可以很好的表达这个意思:(鱼饵就应当符合鱼儿的胃口,而不是钓鱼者)








 本文转自 jingen_zhou 51CTO博客,原文链接:http://blog.51cto.com/zhoujg/519777,如需转载请自行联系原作者


:: Spring Boot :: (v3.4.3) 2025-03-24T21:46:21.136+08:00 INFO 28368 --- [hmdp] [ main] com.hmdp.HmDianPingApplication : Starting HmDianPingApplication using Java 17.0.14 with PID 28368 (E:\JAVA\Java_Redis\hm-dianping\hm-dianping\target\classes started by nine8 in E:\JAVA\Java_Redis) 2025-03-24T21:46:21.138+08:00 DEBUG 28368 --- [hmdp] [ main] com.hmdp.HmDianPingApplication : Running with Spring Boot v3.4.3, Spring v6.2.3 2025-03-24T21:46:21.139+08:00 INFO 28368 --- [hmdp] [ main] com.hmdp.HmDianPingApplication : No active profile set, falling back to 1 default profile: "default" 2025-03-24T21:46:21.682+08:00 INFO 28368 --- [hmdp] [ main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode 2025-03-24T21:46:21.684+08:00 INFO 28368 --- [hmdp] [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode. 2025-03-24T21:46:21.716+08:00 INFO 28368 --- [hmdp] [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 19 ms. Found 0 Redis repository interfaces. 2025-03-24T21:46:21.887+08:00 WARN 28368 --- [hmdp] [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'blogCommentsMapper' defined in file [E:\JAVA\Java_Redis\hm-dianping\hm-dianping\target\classes\com\hmdp\mapper\BlogCommentsMapper.class]: Invalid value type for attribute 'factoryBeanObjectType': java.lang.String 2025-03-24T21:46:21.894+08:00 INFO 28368 --- [hmdp] [ main] .s.b.a.l.ConditionEvaluationReportLogger : Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2025-03-24T2
最新发布
03-26
<think>好的,用户遇到了Spring Boot应用启动时因无效bean定义导致的异常问题,具体是invalid bean definition factoryBeanObjectType异常。我需要先理解这个异常的原因,然后给出解决方案。 首先,用户提到的异常可能与Bean的配置有关。根据引用[1]中的信息,Spring Boot中覆盖Bean定义可能会导致异常,这可能是因为Bean名称冲突或者配置错误。另外,引用[2]提到了BeanCurrentlyInCreationException,这可能与循环依赖有关,但当前问题更可能是Bean定义不正确。 接下来,我需要考虑可能导致invalid bean definition的原因。比如,使用@Bean注解的方法返回类型不明确,或者FactoryBean的实现类未正确指定对象类型。例如,如果自定义的FactoryBean没有正确实现getObjectType方法,Spring可能无法确定Bean的类型,导致异常。 另外,检查Bean的作用域也很重要。如果Bean被定义为原型作用域,但使用时需要单例,可能会导致问题。同时,确保依赖注入的Bean存在且名称正确,避免因找不到依赖而引发异常。 根据引用[3],代码中使用了@Autowired、@Bean和JdbcTemplate,可能涉及数据库配置。检查数据源配置是否正确,是否有缺失的依赖库,比如数据库驱动未添加。 解决方案步骤应包括:检查Bean定义,特别是FactoryBean的实现;验证依赖注入是否正确;检查组件扫描路径是否包含相关类;确保第三方库的Bean正确配置;查看启动日志定位具体错误;以及更新Spring Boot版本以修复可能的框架问题。 最后,生成相关问题时要覆盖常见的Bean配置错误、循环依赖、组件扫描、FactoryBean使用等,帮助用户进一步排查问题。</think>### Spring Boot无效Bean定义异常解决方案 当Spring Boot应用启动时出现`InvalidBeanDefinitionException: Could not determine factoryBeanObjectType`异常,通常由以下原因导致: 1. **FactoryBean未正确实现** - 自定义的`FactoryBean`实现类未重写`getObjectType()`方法 - 示例修正: ```java @Component public class MyFactoryBean implements FactoryBean<MyObject> { @Override public MyObject getObject() { /*...*/ } @Override public Class<?> getObjectType() { return MyObject.class; // 明确指定类型 } } ``` 2. **Bean定义不完整** - 使用`@Bean`注解的方法返回类型不明确时需显式声明: ```java @Bean @Qualifier("customBean") public MyInterface createBean() { // 接口返回类型 return new MyInterfaceImpl(); // 实际返回实现类 } ``` 3. **组件扫描范围问题** - 检查`@SpringBootApplication`或`@ComponentScan`是否包含相关包: ```java @SpringBootApplication(scanBasePackages = "com.example.main") ``` 4. **第三方库的Bean配置** - 使用`@ConfigurationProperties`时需确保配置匹配: ```java @Bean @ConfigurationProperties(prefix = "app.datasource") public DataSource dataSource() { return new HikariDataSource(); } ``` 5. **依赖项缺失** - 检查pom.xml是否缺少必需依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> ``` **诊断步骤**: 1. 查看完整堆栈跟踪,定位到具体Bean定义位置 2. 执行`mvn dependency:tree`检查依赖冲突 3. 在启动类添加`@EnableAutoConfiguration(exclude={...})`排除可疑自动配置类 4. 使用`spring-boot-starter-actuator`的`/beans`端点查看已注册Bean列表 **常见修复模式**: ```java // 模式1:明确指定Bean类型 @Bean public FactoryBean<MyType> myBean() { return new MyFactoryBean(); } // 模式2:使用Provider解决循环依赖 @Autowired private Provider<MyCircularDependency> myBeanProvider; ``` **日志分析要点**: 1. 查找`Creating shared instance of singleton bean`日志记录 2. 注意`BeanDefinitionStoreException`之前的最后一个加载的Bean 3. 检查是否有`No qualifying bean`警告 [^1]: https://www.baeldung.com/spring-boot-bean-definition-override-exception [^2]: 报org.springframework.beans.factory.BeanCurrentlyInCreationException异常 [^3]: import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import org.springframework.jdbc.core.JdbcTemplate;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值