Java 如何在main方法中使用注解的Service和Dao?

星帅 发布于 2016/10/09 15:35
阅读 7K+
收藏 0

1.最近系统业务有点需求需要调整,需要写个main方法执行更新下数据库里面的数据

问:如何在main方法中使用注解的Service和Dao?

系统是使用的spring注解方式:

这是DAO代码片段

@Service("userDao")
public class UserDao  extends HibernateGenericDAO<User, String> {
	
	@Resource(name = "cardDao")
	private CardDao cardDao;

main方法片段:

public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext("classpath*:applicationContext.xml");
        UserDao userDao = ac.getBean(UserDao.class);

main方法运行如下代码时会报一个异常:

UserDao userDao = ac.getBean(UserDao.class);

异常如下:

Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.jiabang.talkback.core.dao.UserDao] is defined
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:296)
	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1127)



求大神指点迷津,不知道在哪个步骤少了点什么,谢谢大家。




加载中
0
lindent
lindent

使用new FileSystemXmlApplicationContext("resource/applicationContext.xml");即可

0
心境111
心境111
applycationcontent.xml 里面有<description>Spring应用程序公共配置 </description>
<!-- 扫描类包,将标注spring注解的类自动转换为bean,同时完成bean的注入 -->
<context:component-scan base-package="com.baobaotao.dao"/>
<!-- 扫描service包,应用spring的注解配置 -->
<context:component-scan base-package="com.baobaotao.service"/> 这个吗
0
zhangcan1
zhangcan1
你先看下,有注入到bean容器吗?
0
f
fgod
UserDao userDao = (UserDao)ac.getBean("userDao");
0
Will_awokE
Will_awokE
通过beanfactory 拿到bean的实例,然后的操作就和正常方法调用一样了
0
Gillian_Male
Gillian_Male

目测classpath指定的路径没加载对

0
-虎口脱险-
-虎口脱险-

其实我想问楼主的是,为什么不用写个单元测试的方法去处理而是来写main方法呢?

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:spring.xml","classpath:spring-mybatis.xml"  })
public  class BaseTest {
    static{
         try {
            Log4jConfigurer.initLogging("classpath:property/log4j.properties");
        } catch (FileNotFoundException e) {
            System.out.println("can not foun");
            e.printStackTrace();
        }  
    }
}


public class AttendanceTest extends BaseTest{
    
    @Autowired
    private DispatchService dispatchService;
    
    @Test
    public void test() throws Exception{
        dispatchService.ifContainCity("", "", "");
    }
}

返回顶部
顶部