Spring3.0新特性

1.基础
Spring3.0对jar包进行了改变。

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值