作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从事 Spring 和 hibernate 项目。对于数据库通信,我们有传统的两层实现(即 DAO 层和服务层)。我有以下文件:
DemoDao.java
package net.dao;
import java.util.List;
import net.domain.Demo;
public interface DemoDao
{
public List<Demo> get();
}
DemoDaoImpl.java
package net.dao;
import java.util.List;
import net.domain.Demo;
import org.hibernate.SessionFactory;
import org.hibernate.classic.Session;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class DemoDaoImpl implements DemoDao
{
@Autowired
SessionFactory sessionFactory;
public List<Demo> get()
{
Session session=sessionFactory.openSession();
List<Demo> list=session.createQuery("from Demo").list();
session.close();
return list;
}
}
那是 DAO 层
以下来自服务层:
DemoManager.java
package net.service;
import java.util.List;
import net.domain.Demo;
public interface DemoManager
{
public List<Demo> get();
}
DemoManagerImpl.java
package net.service;
import java.util.List;
import net.dao.DemoDao;
import net.domain.Demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class DemoManagerImpl implements DemoManager
{
@Autowired
DemoDao demoDao;
public List<Demo> get()
{
List<Demo> list=demoDao.get();
return list;
}
}
以下是我的 Controller
来自DualLayerView.java
package net.spring;
import java.util.List;
import net.domain.Demo;
import net.service.DemoManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class FromDualLayerView
{
@Autowired
DemoManager demoManager;
@RequestMapping("/dualLayer")
public ModelAndView toResult(ModelMap map)
{
List<Demo> list=demoManager.get();
map.addAttribute("listData", list);
return new ModelAndView("result");
}
}
我的问题
实际上一切正常,但我的问题是我没有注释 DemoDao 和 DemoManager 接口(interface),但我正在 Autowiring 它们。根据 Autowiring 定义,被注释的实体被注入(inject)。
Spring容器如何注入(inject)依赖?
它如何像 Impl 类一样工作?
提前致谢。
最佳答案
DemoManagerImpl 被注释为服务,并且是注入(inject) FromDualLayerView 类中的唯一合格 bean,因为它是作为 DemoManager 实例的唯一组件。我想您也打开了组件扫描。
关于java - Autowiring 接口(interface)无需注释即可工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24656511/
这实际上是我问的问题的一部分here ,该问题没有得到答复,最终被标记为重复。 问题:我只需使用 @Autowired 注释即可使用 JavaMailSender。我没有通过任何配置类公开它。 @Co
我是一名优秀的程序员,十分优秀!