Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在一个实例bean上同时使用注释和XML配置_Java_Spring - Fatal编程技术网

Java 在一个实例bean上同时使用注释和XML配置

Java 在一个实例bean上同时使用注释和XML配置,java,spring,Java,Spring,我正在使用注释创建服务: @Service @Repository public class UserServiceImpl implements UserService { private String defaultPassword; @Autowired private UserRepository userRepository; // ... @Override public void setDefaultPassword(String defaultPas

我正在使用注释创建服务:

@Service
@Repository
public class UserServiceImpl implements UserService {
  private String defaultPassword;

  @Autowired
  private UserRepository userRepository;

  // ...

  @Override
  public void setDefaultPassword(String defaultPassword) {
     this.defaultPassword = defaultPassword;
  }

  @Override
  public String getDefaultPassword() {
     return defaultPassword;
  }
}
我想使用Spring XML配置而不是通过注释来配置
defaultPassword
值,因此我在XML定义中添加了以下内容:

<bean id="userServiceImpl" class="com.test.service.UserServiceImpl">
   <property name="defaultPassword" value="youmustchangethis" />
</bean>

我已经在注释和XML声明中匹配了bean名称(使用bean id)。我的问题是
userserviceinmpltest
中的
userService
变量是否总是由在XML和注释中配置的同一个单例bean注入?我已经搜索了文档,但没有找到像这样的“混合”方法的解释。

在这种情况下,xml文件中定义的bean将覆盖从注释生成的bean。这是因为spring基于类名命名注释bean,第一个字母改为小写。除非你给它一个明确的名字。不能存在两个同名的bean,因此xml定义将覆盖注释bean


在这里,您将得到一个名为
userserviceinpl
的单例。

在这种情况下,xml文件中定义的bean将覆盖从注释生成的bean。这是因为spring基于类名命名注释bean,第一个字母改为小写。除非你给它一个明确的名字。不能存在两个同名的bean,因此xml定义将覆盖注释bean


在这里,您将得到一个名为
userserviceinpl
的单例。

删除
@Repository
注释,您应该使用
原型
注释之一。我想在这里使用Spring unchecked异常,因为我在服务层中注入了Spring数据存储库。如果我必须删除
@Repository
注释,还有其他方法可以使用Spring未检查异常吗?删除
@Repository
注释,您应该使用
原型
注释中的一个注释我想在这里使用Spring未检查异常,因为我在我的服务层中注入了Spring数据存储库。如果我必须删除
@Repository
注释,是否有其他方法使用Spring unchecked exception?谢谢您的回答。如果XML定义覆盖了注释,这是否意味着我丢失了所有注释功能,例如
@Repository
定义的未检查异常支持,或者如果我使用
@transactional
,则失去了事务支持?否,所有注释仍然存在,并且它们都得到了正确的支持。唯一的区别是最终得到的是一个bean定义,而不是两个。XMLBean拥有annotation bean所拥有的一切,外加
defaultPassword
。感谢您的回答。如果XML定义覆盖了注释,这是否意味着我丢失了所有注释功能,例如
@Repository
定义的未检查异常支持,或者如果我使用
@transactional
,则失去了事务支持?否,所有注释仍然存在,并且它们都得到了正确的支持。唯一的区别是最终得到的是一个bean定义,而不是两个。xml bean拥有注释bean所拥有的一切,外加
defaultPassword
public class UserServiceImplTest extends AbstractServiceImplTest {

  @Autowired
  private UserService userService;

  // ...
}