java中属性_java中属性的类型

1.看代码,下面是一个类

下面主要红色字体部分的属性

package com.westsoft.serviceimpl;

import java.util.List;

import javax.annotation.Resource;

import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Propagation;

import org.springframework.transaction.annotation.Transactional;

import com.westsoft.bean.Person;

import com.westsoft.dao.PersonDao;

import com.westsoft.service.PersonService;

@Service @Transactional

public class PersonServiceBean implements PersonService {

private JdbcTemplate jdbcTemplate;

@Resource

public voidsetJdbcTemplate(DataSource dataSource) {

this.jdbcTemplate =newJdbcTemplate(dataSource);

}

@Resource

private PersonDao personDao;

/*public PersonDao getPersonDao() {

return personDao;

}

public void setPersonDao(PersonDao personDao) {

this.personDao = personDao;

}*/

@Override

public void delete(Integer id) {

//TODO Auto-generated method stub

}

@Override

public Person getPerson(Integer id) {

//TODO Auto-generated method stub        return null;

}

@Override @Transactional(propagation=Propagation.NOT_SUPPORTED)

public List getPersons() {

//TODO Auto-generated method stub        return null;

}

/** 新增

* @Transactional(rollbackFor=Exception.class)

* RuntimeException运行期例外,默认回滚

* Exception 非运行期例外,不回滚

* @Transactional(rollbackFor=Exception.class)

* @Transactional(propagation=Propagation.NOT_SUPPORTED):不开启事务

* @Transactional(propagation=Propagation.REQUIRED):默认事务行为,如果方法运行时已经处在一个事务中,则加入该事务,

*                                                     否则为自己创建一个事务

* @Transactional(propagation=Propagation.REQUIREDNEW):必须开启一个新事务,事务中嵌套事务

*  @Transactional(propagation=Propagation.SUPPORTS):如果方法在已存在的事务中执行,则加入该事务,如果不在事务中执行,

*                                                  则方法在没有事务的环境下执行.

*  @Transactional(propagation=Propagation.MANDATORY):指定方法只能在已有的事务中执行,不会自动创建事务,如果没有在事务

*                                                  中执行,则抛出异常.

*  @Transactional(propagation=Propagation.NEVER):不能在事务中执行,否则抛出异常

*

*  @Transactional(propagation=Propagation.NESTED):

**/

@Override @Transactional(propagation=Propagation.REQUIRED)

public void save(String name) throws Exception {

//TODO Auto-generated method stub

this.jdbcTemplate.update("insert into person(name) values(?)", new Object[]{name},

new int[]{java.sql.Types.VARCHAR});

//throw new RuntimeException("运行期例外");

}

@Override

public void update(Person person) {

//TODO Auto-generated method stub

}

}

public voidsetJdbcTemplate(DataSource dataSource) {

this.jdbcTemplate =newJdbcTemplate(dataSource);}

2.单元测试代码

PropertyDescriptor[] ps = Introspector.getBeanInfo(PersonServiceBean.class).getPropertyDescriptors();

for(PropertyDescriptor properdesc : ps){

System.out.println(properdesc.getName()+":"+properdesc.getPropertyType());

}

3.测试输出

class:class java.lang.Class

jdbcTemplate:interface javax.sql.DataSource

persons:interface java.util.List

根据输出的内容可以判断出属性的名称是jdbcTemplate,属性的数类型是javax.sql.DataSource

由此可见类的属性的类型并不是由属性所关联的字段的类型决定的,而是由传入的参数的类型决定的

4.如果有getAaa则属性的类型由getAaa的返回值决定,如下代码

package com.westsoft.serviceimpl;

import java.util.List;

import javax.annotation.Resource;

import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Propagation;

import org.springframework.transaction.annotation.Transactional;

import com.westsoft.bean.Person;

import com.westsoft.dao.PersonDao;

import com.westsoft.service.PersonService;

@Service @Transactional

public class PersonServiceBean implements PersonService {

private String bbb;

publicInteger getAaa() {

return0;

}

public voidsetAaa(Integer aaa) {

this.bbb = (String)aaa.toString();

}

privateJdbcTemplate jdbcTemplate;

publicJdbcTemplate getJdbcTemplate() {

return this.jdbcTemplate ;

}

@Resource

public voidsetJdbcTemplate(DataSource dataSource) {

this.jdbcTemplate =newJdbcTemplate(dataSource);

}

@Resource

private PersonDao personDao;

/*public PersonDao getPersonDao() {

return personDao;

}

public void setPersonDao(PersonDao personDao) {

this.personDao = personDao;

}*/

@Override

public void delete(Integer id) {

//TODO Auto-generated method stub

}

@Override

public Person getPerson(Integer id) {

//TODO Auto-generated method stub        return null;

}

@Override @Transactional(propagation=Propagation.NOT_SUPPORTED)

public List getPersons() {

//TODO Auto-generated method stub        return null;

}

/** 新增

* @Transactional(rollbackFor=Exception.class)

* RuntimeException运行期例外,默认回滚

* Exception 非运行期例外,不回滚

* @Transactional(rollbackFor=Exception.class)

* @Transactional(propagation=Propagation.NOT_SUPPORTED):不开启事务

* @Transactional(propagation=Propagation.REQUIRED):默认事务行为,如果方法运行时已经处在一个事务中,则加入该事务,

*                                                     否则为自己创建一个事务

* @Transactional(propagation=Propagation.REQUIREDNEW):必须开启一个新事务,事务中嵌套事务

*  @Transactional(propagation=Propagation.SUPPORTS):如果方法在已存在的事务中执行,则加入该事务,如果不在事务中执行,

*                                                  则方法在没有事务的环境下执行.

*  @Transactional(propagation=Propagation.MANDATORY):指定方法只能在已有的事务中执行,不会自动创建事务,如果没有在事务

*                                                  中执行,则抛出异常.

*  @Transactional(propagation=Propagation.NEVER):不能在事务中执行,否则抛出异常

*

*  @Transactional(propagation=Propagation.NESTED):

**/

@Override @Transactional(propagation=Propagation.REQUIRED)

public void save(String name) throws Exception {

//TODO Auto-generated method stub

this.jdbcTemplate.update("insert into person(name) values(?)", new Object[]{name},

new int[]{java.sql.Types.VARCHAR});

//throw new RuntimeException("运行期例外");

}

@Override

public void update(Person person) {

//TODO Auto-generated method stub

}

}

5.测试输出

注意红色部分

publicInteger getAaa() {

return0;}

publicvoidsetAaa(Integer aaa) {this.bbb = (String)aaa.toString();}

通过反射测试出属性的数据类型为

aaa:class java.lang.Integer

class:class java.lang.Class

jdbcTemplate:class org.springframework.jdbc.core.JdbcTemplate

persons:interface java.util.List

6.总结

在没有getAaa的情况下,属性的数据类型是有setAaa的传入参数决定,如果有getAaa则属性的数据类型有getAaa的返回类型决定.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值