注解关键字
@InitBinder用于表单自定义属性绑定。这里我们要求输入一个日期格式的生日。
case :我们的项目使用定义父类Controller 并定义方法
- @InitBinder
- public void initBinder(WebDataBinder binder) {
- DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
- //binder.registerCustomEditor(Date.class, "birthday",new CustomDateEditor(format, true)); 第二个参数可有可无, 表明不饿按对象的属性格式化
- binder.registerCustomEditor(Date.class, new CustomDateEditor(format, true));
- }
JSR-250标准注解
@Resource来代替Spring专有的@Autowired注解。
Spring支持三个由JSR-250规范定义的注解,它们分别是@Resource、@PostConstruct以及@PreDestroy。
@Resource(name=“beanId”或者type=“Class”)
@Autowired() === @Resource(type="")
@Autowired()配合 @Qualifier("beanId") === @Resource(name="beanId")
@PostConstruct 于方法上
此方法就会在Bean初始化之后被Spring容器执行(注:Bean初始化包括,实例化Bean,并装配Bean的属性(依赖注入))
@Value在注解的方式(Spring3.0)中,容器加载了Properties文件
- <util:properties id="jdbc" location="/WEB-INF/database.properties"/>
- @Value("${jdbc.url}")
- private String url;
@ImportResouce 如果只有这么一个类使用该配置文
- @ImportResource("/WEB-INF/database.properties")
- public class AccountDaoImpl extends AccountDao {
@RequestParam
@RequestParam("username")
@PathVariable
@PathVariable()参数可有可无,默认按照名称匹配,参表示对应地址栏参数名称
@Repository
明确这个类是用于持久层的实现类,注意这样的注解不能用于接口,仅适用于实现类!
@RequestMapping
@RequestMapping("/url"),亦可以是String[]:@RequestMapping({"/url1","/url2"})
Spring-Test
- import org.junit.runner.RunWith;
- import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests;
- import org.springframework.test.context.ContextConfiguration;
- import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
- import org.springframework.test.context.transaction.TransactionConfiguration;
- import org.springframework.transaction.annotation.Transactional;
- @ContextConfiguration(locations = "classpath:applicationContext.xml")
- @RunWith(SpringJUnit4ClassRunner.class)
- @Transactional
- @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
- public abstract class AbstractTestCase extends
- AbstractTransactionalDataSourceSpringContextTests {
- }
主要增加了spring-test-2.5.6.jar和junit-4.4.jar两个用于测试的包!
这里尤其要说明一下,由于我们使用注解方式自然要用到JUnit-4.X系列,而Sring-Test对于JUnit有个累人的要求,JUnit的版本必须是4.4,不支持高版本(如4.5、4.7等)。否则,会产生java.lang.ClassNotFoundException: org.junit.Assume$AssumptionViolatedException异常。
@RunWith(SpringJUnit4ClassRunner.class)SpringJUnit支持,由此引入Spring-Test框架支持!
@Transactional这个非常关键,如果不加入这个注解配置,事务控制就会完全失效!
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)这里的事务关联到配置文件中的事务控制器(transactionManager = "transactionManager"),同时指定自动回滚(defaultRollback = true)。这样做操作的数据才不会污染数据库!
AbstractTransactionalDataSourceSpringContextTests要想构建这一系列的无污染纯绿色事务测试框架就必须找到这个基类!
例:
- import java.util.Date;
- import org.junit.Test;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.zlex.spring.dao.AccountDao;
- import org.zlex.spring.domain.Account;
- public class AccountDaoTest extends AbstractTestCase {
- @Autowired
- private AccountDao accountDao;
- @Test
- public void test() {
- Account ac = new Account();
- ac.setBirthday(new Date());
- ac.setUsername("SPRING");
- ac.setPassword("SNOWOLF");
- ac.setEmail("[email protected]");
- // 创建用户
- accountDao.create(ac);
- }
- }
@RunWith(Suite.class)集合测试
@SuiteClasses( { AccountDaoTest.class })集合,包括AccountDaoTest类,多个测试类可使用逗号分隔注解关键字
@InitBinder用于表单自定义属性绑定。这里我们要求输入一个日期格式的生日。
case :我们的项目使用定义父类Controller 并定义方法
- @InitBinder
- public void initBinder(WebDataBinder binder) {
- DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
- //binder.registerCustomEditor(Date.class, "birthday",new CustomDateEditor(format, true)); 第二个参数可有可无, 表明不饿按对象的属性格式化
- binder.registerCustomEditor(Date.class, new CustomDateEditor(format, true));
- }
JSR-250标准注解
@Resource来代替Spring专有的@Autowired注解。
Spring支持三个由JSR-250规范定义的注解,它们分别是@Resource、@PostConstruct以及@PreDestroy。
@Resource(name=“beanId”或者type=“Class”)
@Autowired() === @Resource(type="")
@Autowired()配合 @Qualifier("beanId") === @Resource(name="beanId")
@PostConstruct 于方法上
此方法就会在Bean初始化之后被Spring容器执行(注:Bean初始化包括,实例化Bean,并装配Bean的属性(依赖注入))
@Value在注解的方式(Spring3.0)中,容器加载了Properties文件
- <util:properties id="jdbc" location="/WEB-INF/database.properties"/>
- @Value("${jdbc.url}")
- private String url;
@ImportResouce 如果只有这么一个类使用该配置文
- @ImportResource("/WEB-INF/database.properties")
- public class AccountDaoImpl extends AccountDao {
@RequestParam
@RequestParam("username")
@PathVariable
@PathVariable()参数可有可无,默认按照名称匹配,参表示对应地址栏参数名称
@Repository
明确这个类是用于持久层的实现类,注意这样的注解不能用于接口,仅适用于实现类!
@RequestMapping
@RequestMapping("/url"),亦可以是String[]:@RequestMapping({"/url1","/url2"})
Spring-Test
- import org.junit.runner.RunWith;
- import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests;
- import org.springframework.test.context.ContextConfiguration;
- import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
- import org.springframework.test.context.transaction.TransactionConfiguration;
- import org.springframework.transaction.annotation.Transactional;
- @ContextConfiguration(locations = "classpath:applicationContext.xml")
- @RunWith(SpringJUnit4ClassRunner.class)
- @Transactional
- @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
- public abstract class AbstractTestCase extends
- AbstractTransactionalDataSourceSpringContextTests {
- }
主要增加了spring-test-2.5.6.jar和junit-4.4.jar两个用于测试的包!
这里尤其要说明一下,由于我们使用注解方式自然要用到JUnit-4.X系列,而Sring-Test对于JUnit有个累人的要求,JUnit的版本必须是4.4,不支持高版本(如4.5、4.7等)。否则,会产生java.lang.ClassNotFoundException: org.junit.Assume$AssumptionViolatedException异常。
@RunWith(SpringJUnit4ClassRunner.class)SpringJUnit支持,由此引入Spring-Test框架支持!
@Transactional这个非常关键,如果不加入这个注解配置,事务控制就会完全失效!
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)这里的事务关联到配置文件中的事务控制器(transactionManager = "transactionManager"),同时指定自动回滚(defaultRollback = true)。这样做操作的数据才不会污染数据库!
AbstractTransactionalDataSourceSpringContextTests要想构建这一系列的无污染纯绿色事务测试框架就必须找到这个基类!
例:
- import java.util.Date;
- import org.junit.Test;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.zlex.spring.dao.AccountDao;
- import org.zlex.spring.domain.Account;
- public class AccountDaoTest extends AbstractTestCase {
- @Autowired
- private AccountDao accountDao;
- @Test
- public void test() {
- Account ac = new Account();
- ac.setBirthday(new Date());
- ac.setUsername("SPRING");
- ac.setPassword("SNOWOLF");
- ac.setEmail("[email protected]");
- // 创建用户
- accountDao.create(ac);
- }
- }
- import org.junit.runner.RunWith;
- import org.junit.runners.Suite;
- import org.junit.runners.Suite.SuiteClasses;
- @RunWith(Suite.class)
- @SuiteClasses( { AccountDaoTest.class, AccountDaoTest.class })
- public class DaoAllTests {
- }
- $.ajaxSetup({
- contentType : 'application/json'
- })
解决org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
$.post()支持json格式