spring3.0学习笔记(1)

用过spring2.5的朋友应该都知道它的一些简单的应用,如:

bean.xml中配置<bean id="userDAO" class="cn.ling.spring3.dao.impl.UserDAOImpl">

然后在要用到的类中用注解注入,如下

@ContextConfiguration("classpath:beans.xml")
public class UserDAOTest {
 
 @Resource(name="userDAO")
 private UserDAO userDAO;
 

 public void testSave() {
  this.userDAO.save(new User());
 }

}

或者不用注解,如下:

public void testSave() {
  ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

  
  UserDAO userDAO = (UserDAO)context.getBean("userDAO");
  userDAO.save(new User());
 }

在这里,spring3.0给我们提供了一个新功能,可以避免上面的强制转换
  UserDAO userDAO = context.getBean("userDAO", UserDAO.class);

呵呵,可能这个没方便多少!

 

如果你不大了解XML或者是不想用xml来配置bean,想用java风格来配置bean的话,那么spring3.0下面的这个特性就很合胃口了。首先再引入两个包:asm-3.2.jar和cglib-2.2.jar,我在下面上传了。

接着,在bean.xml中加入一句:<context:component-scan base-package ="cn.ling.spring3.config"> </context:component-scan>

然后建一个类cn/ling/spring3/config/AppConfig .java里面的代码如下:
@Configuration
public class AppConfig {
 @Bean
 public UserDAO userDAO() {
  return new UserDAOImpl();
 }

}

这个在bean.xml中相当于<bean id = "userDAO" class="userDAO"/>
这样就可以了。

 

看到这,可能你会问,那类里面的属性怎么注入呢。

其实道理也很简单,在上面的AppConfig.java中,再搞一个@Bean,引用第一个bean就可以了。修改如下(只在AppConfig.java中修改就可以了)。

@Configuration
public class AppConfig {
 @Bean
 public UserDAO userDAO() {
  return new UserDAOImpl();
 } 
 @Bean
 public UserService userService() {
  UserServiceImpl service = new UserServiceImpl();
  service.setUserDAO(userDAO());          //在这里就注入了userDAO属性。
  return service;
 }
}

 

那么数据库的参数怎么配置呢?这个就搞得有点偏复杂了。如下,也是只在AppConfig.java中修改。

首先定义几个属性,用注入的方式。

private @Value("#{jdbcProperties.url}")String  jdbcUrl;
private @Value("#{jdbcProperties.username}")String  username;
private @Value("#{jdbcProperties.password}")String  password;

然后,再加一个@Bean

@Bean
public DataSource  dataSource(){
return  new  DriverManagerDataSource(jdbcUrl,username,password);
}

最后在bean.xml中加入一句<util:properties  id="jdbcProperties"  location="classpath: cn/ling/dao/jdbc.properties"/>

 

如何取得SessionFactory呢?如下

@Bean
public SessionFactorysessionFactory(){
   //wire up a session factory
   AnnotationSessionFactoryBean  asFactoryBean  =   new AnnotationSessionFactoryBean();
  asFactoryBean.setDataSource(dataSource());   //这里的dataSource就是上面讲的那个方法。
  //add itional config
   return asFactoryBean.getObject();
}

这一讲就到这,下一讲是另一个重点:SpEL表达式。

深圳人才网 深圳招聘网 深圳人才招聘网 深圳人才大市场 

企业、个人免费注册,获取想要的 深圳 软件工程师招聘信息 月薪最低3000-8000,更有高端猎头职位! 

www.szrcwz.com                                                                                                                                           

                  Google 提供的广告

posted @ 2010-09-17 08:43  栈长  阅读(86)  评论(0编辑  收藏  举报