レイヤーを配線できませんスプリングブート| MyBatisアプリケーション。この問題は、サービス層がMapperを使用しているときに起こりそうです。スプリングブーツ| MyBatisプロジェクト構造はレイヤーを配線できません
コントローラ方法試料:
@Controller
@RequestMapping("demo")
public class MessageController {
@Autowired
private MessageService messageService;
@RequestMapping(value = "messages", method = RequestMethod.GET)
public String getMessages(ModelMap modelMap) {
modelMap.addAttribute(MESSAGE,
messageService.selectMessages());
return "messages";
}
サービスクラス:
@Service
public class MessageService {
@Autowired // Not sure if I can use Autowired here.
private MessageMapper messageMapper;
public MessageService() {
}
public Collection<Message> selectMessages() { return
messageMapper.selectAll(); }
}
MyBatisのマッパー:
@Mapper
public interface MessageMapper {
@Select("select * from message")
Collection<Message> selectAll();
}
更新
私はいくつかの基本的な知識に基づいて間違いがあるように感じています。おそらく外部ライブラリを管理しています。
ここにはpom.xml
があります。オーバーロードされているように見えますが、私はさまざまなスプリングブートパッケージを管理する際に多くのエラーに直面しました。自動設定用のスターターが含まれています。ここで pom.xml
は、プロジェクト構造です:
UPDATE#2
私はDB接続がうまく機能していると確信している、私は、MySQLのワークベンチ間の変化を追跡することができますよスプリングブートはschema.sql
とdata.sql
を実行しています。しかし、どういうわけか、MyBatisマッパーのメソッドはNullPointerExceptionを投げ、ページは終了コード500に進みます。接続できないようです。
のような方法でそれを使用しますice(); 'これはSpringのコントロールの外にインスタンスを生成し、自動配線は起こりません。あなたは 'MessageService'をコントローラにも注入する必要があります。 –
@M。 Deinum、私はそれについて考えていた。しかし、@Autowired private MessageService messageServiceとして注入しようとすると、IDEAによって下線が引かれ、コンパイルされません。 –
また、 'MessageService'に' @Service'を注釈する必要があります。そうでなければ、それは検出されません。また、私はそれがコンパイルされないことに疑いを持っています。私はあなたのIDEが 'MessageService'が自動配線できないとあなたに伝えていると思います。 –