Spring3.0新特性

来源:互联网 发布:jordan 2 wing it 编辑:程序博客网 时间:2024/05/12 05:43
1.基础
Spring3.0对jar包进行了改变。
Spring3.0新特性



public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

public interface UserDAO {
public void save(User u);
}

public class UserDAOImpl implements UserDAO {

@Override
public void save(User u) {
System.out.println("a user saved!");
}

}


beans.xml:
《?xml version="1.0" encoding="UTF-8"?》
《beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"》


《bean id="userDAO"class="com.bjsxt.spring30.dao.impl.UserDAOImpl"》
《/bean》
《/beans》




@ContextConfiguration("classpath:beans.xml")
public class UserDAOTest extendsAbstractJUnit4SpringContextTests{
@Resource(name="userDAO")
private UserDAO userDAO;
@Test
public void testSave() {
this.userDAO.save(new User());
}

}



2.context.getBean可以使用泛型,不用强制类型转化啦
public class UserDAOTest2 {
@Test
public void testSave() {
ApplicationContext context = newClassPathXmlApplicationContext("beans.xml");
UserDAO userDAO = context.getBean("userDAO",UserDAO.class);//3.0
//UserDAO userDAO =(UserDAO)context.getBean("userDAO");2.5
userDAO.save(new User());
}
}




3.Bean的三种配置:xml,Annotation,javaconfig(3.0)
beans.xml:
《?xml version="1.0" encoding="UTF-8"?》
《beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd"》
《context:component-scanbase-package="com.bjsxt.spring30.config"》《/context:component-scan》
《/beans》



com.bjsxt.spring30.config:
@Configuration
//使用这个注解需要引入cglib.jar和asm.jar
public class AppConfig {
@Bean
//默认名字userDAO
public UserDAO userDAO() {
return new UserDAOImpl();
}
//xml
//《bean id = "userDAO" class="userDAO()"
}




4.bean的注入
@Configuration
public class AppConfig {
@Bean
public UserDAO userDAO() {
return new UserDAOImpl();
}
@Bean
public UserService userService() {
UserServiceImpl service = new UserServiceImpl();
service.setUserDAO(userDAO());
return service;
}
}


public interface UserService {
public void add(User u);
}



public class UserServiceImpl implements UserService {
private UserDAO userDAO;
public UserDAO getUserDAO() {
return userDAO;
}

public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}

@Override
public void add(User u) {
this.userDAO.save(u);
}

}




@ContextConfiguration("classpath:beans.xml")
public class UserServiceTest extendsAbstractJUnit4SpringContextTests{
@Resource(name="userService")
private UserService userService;
@Test
public void testAdd() {
this.userService.add(new User());
}

}






5.SpringExpres sionLanguage表达式语言SpEL
public class SpELTest_Simple {
@Test
public void test01() {
Expr essio nParser parser = new SpelExp ressionParser();
Expre ssion exp = parser.parseExpression("'Hello,World'");
System.out.println((String)exp.getValue());
}
//如果Hello,World
@Test
public void test02() {
User u = new User();
u.setUsername("zhangsan");
EvaluationContext context = newStandardEvaluationContext(u);
Expre ssionParser parser = new SpelExpr essionParser();
Exp ression exp = parser.parseExpres sion("username");//u.getUsername()
System.out.println((String)exp.getValue(context));
System.out.println((String)exp.getValue(u));
}
//"new HelloWorld().sayHello()"
//eval_r("alert('ok');");
}






SqEL更加复杂的内容:
《!--《context:component-scanbase-package="com.bjsxt.spring30.config"》《/context:component-scan》--》

《bean id="my" class="com.bjsxt.spring30.spel.MyBean"》
《property name="randomNumber"value="#{T(java.lang.Math).random() * 100}"》《/property》
《property name="userRegion"value="#{systemProperties['user.country']}"》《/property》
《/bean》




public class MyBean {
private double randomNumber;
private String userRegion;
public double getRandomNumber() {
return randomNumber;
}
public void setRandomNumber(double randomNumber) {
this.randomNumber = randomNumber;
}
public String getUserRegion() {
return userRegion;
}
public void setUserRegion(String userRegion) {
this.userRegion = userRegion;
//System.getProperty("user.country");
}
}



@ContextConfiguration("classpath:beans.xml")
public class SpELTest extendsAbstractJUnit4SpringContextTests{
@Resource
private MyBean my;
@Test
public void test01() {
System.out.println(my.getRandomNumber());
System.out.println(my.getUserRegion());
}

}
详情见Spring3.0的开发文档



0 0