1、JUnit测试类AbstractJUnit4SpringContextTests
2、context.getBean可以使用泛型,不用强制转换了
3、三种配置方式
XML
Annotation
JavaConfig(需要CGLIB和asm包)
JavaConfig:用Java代码写配置文件,@Configuation、@Bean和context:component-scan配合使用
什么是动态语言?
有个字符串"new HelloWorld().sayHello()",动态语言就是可以把字符串当作代码来执行
比如javascript里的eval("alert('ok');");
@ContextConfiguration("classpath:beans.xml")
public class UserDAOTest extends AbstractJUnit4SpringContextTests {
@Resource(name="userDAO")
private UserDAO userDAO;
@Test
public void testSave() {
this.userDAO.save(new User());
}
}
@ContextConfiguration:指明需要到哪个xml文件里去找
2、context.getBean可以使用泛型,不用强制转换了
public class UserDAOTest2 {
@Test
public void testSave() {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
//原来的取法
//UserDAO userDAO = (UserDAO)context.getBean("userDAO");
//现在的取法
UserDAO userDAO = context.getBean("userDAO", UserDAO.class);
userDAO.save(new User());
}
}
getBean的时候指明了,拿出来是要用什么类型来对待,不需要强制转换了
3、三种配置方式
XML
Annotation
JavaConfig(需要CGLIB和asm包)
JavaConfig:用Java代码写配置文件,@Configuation、@Bean和context:component-scan配合使用
@Configuation
public class AppConfig {
@Bean
public UserDAO userDAO() {
return new UserDAOImpl();
}
//xml
//<bean id="userDAO" class="userDAO()"/>
}
4、SpEL表达式
什么是动态语言?
有个字符串"new HelloWorld().sayHello()",动态语言就是可以把字符串当作代码来执行
比如javascript里的eval("alert('ok');");
<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>