我尝试使用java Spring映射对象DTO到对象正常
我尝试调用接口映射器,因为服务,但我有NullPointerExctive,似乎接口没有注入服务,我使用自动配置,我退出了这个
服务
@Service
public class FollowService implements IFollowService{
@Autowired
IFollowRepository iFollowRepository;
private IUserMapper iUserMapper;
@Override
public UserDTOCount countFollowers(int userId) throws UserIdNotFoundException, UserNotFollowException {
return iUserMapper.toUserCount(iFollowRepository.getUserById(userId));
}
制图员
@Mapper(componentModel = "spring")
public interface IUserMapper {
@Mappings({
@Mapping(source = "id" , target = "id"),
@Mapping(source = "name", target = "name"),
@Mapping(source = "followers", target = "followers", qualifiedByName = "followers")
})
UserDTOCount toUserCount(User user);
错误
processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException: null
at com.reto1.demo.Service.FollowService.countFollowers(FollowService.java:54) ~[classes/:na]
我尝试调试,我看到iUserMapper是空的,我不知道如何调用,因为服务
谢谢!
看了很多问题后我用这个表格解决了错误
-首先,在pom中添加插件。xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source> <!-- depending on your project -->
<target>1.8</target> <!-- depending on your project -->
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</path>
<!-- other annotation processors -->
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
第二,我加入了龙目舞
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</path>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.4.1.Final</version>
</path>
最后我加上自动配发
@Service
public class FollowService implements IFollowService{
@Autowired
IFollowRepository iFollowRepository;
@Autowired
IUserMapper iUserMapper;
在FollowService
中,iUserMapper
为null
的原因是您没有注射映射器。
您需要在服务中添加@Autowired
。
e. g.
@Service
public class FollowService implements IFollowService{
@Autowired
IFollowRepository iFollowRepository;
@Autowired
private IUserMapper iUserMapper;
@Override
public UserDTOCount countFollowers(int userId) throws UserIdNotFoundException, UserNotFollowException {
return iUserMapper.toUserCount(iFollowRepository.getUserById(userId));
}
}
小评论:我的一个小离题。我建议不要在接口前面加I
。IDE可以清楚地显示什么是类,什么是接口,而且在树结构中更容易看到它们,因为不是所有的东西都在“I”下
我正在使用MapStruct将对象从DTO映射到DTO。我的映射器依赖于一些服务/存储库来从数据库中获取数据,例如,从具有IDs列表的DTo映射到具有其他POJO列表的POJO。为此,我有一个Mapper inteface和一个抽象类Decorator来实现这个接口。我想测试映射器,但我需要模拟装饰器中的服务。我的问题是我怎样才能做到这一点? 现在我知道如果mapper没有那么多依赖项(SOLID
我需要记录各种业务,他们的城市和他们在每个城市的分支机构。每个企业可能在不同的城市,在每个城市可能有不同的分支机构。
我有一个简单的Java单模块Gradle项目,其中我使用Mapstruct进行Java映射。我的如下所示: 我的源文件夹包含以下Java源代码:
映射容器端口到宿主主机的实现 默认情况下,容器可以主动访问到外部网络的连接,但是外部网络无法访问到容器。 容器访问外部实现 容器所有到外部网络的连接,源地址都会被 NAT 成本地系统的 IP 地址。这是使用 iptables 的源地址伪装操作实现的。 查看主机的 NAT 规则。 $ sudo iptables -t nat -nL...Chain POSTROUTING (policy ACCEP
问题内容: 我是一个长期的python开发人员。我正在尝试Go,将现有的python应用程序转换为Go。它是模块化的,对我来说真的很好用。 在Go中创建相同的结构后,我似乎陷入了周期性的导入错误,这比我想要的要多得多。从未在python中出现任何导入问题。我什至不必使用导入别名。所以我可能有一些在python中不明显的周期性导入。我实际上发现那个奇怪。 无论如何,我迷路了,试图在Go中修复这些问题
基于文档(4.7.6 -了解特定的依赖关系),我们可以通过指定配置本身来了解特定的配置。在示例中,他们将配置< code>compile用作不推荐使用的配置。我试图重现相同的命令,将< code>build.gradle中的< code>compile配置替换为< code>implementation配置(正如我所得到的,我们不应该再使用< code>compile)。但是当我跑的时候: Gra