您的位置:首页 > 编程语言 > Java开发

Spring3.0新特性

2017-02-04 10:46 405 查看
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的开发文档
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring spring3.0