1、一个长期不接触java容易搞错的问题:
package mockitodemo;
public class testClass {
Person a;
public Person setA(Integer personID, String personName) {
this.a= new Person(personID, personName);
return a;
}
public Person getA(){
return this.a;
}
public static void main(String args[]) {
testClass tc1 = new testClass(); //实例化了一个testClass对象,但是类内部a只是做了声明,未进行指向
Person person1 = tc1.setA(123, "curry");//tc1对象内部运行了set方法,生成了一个person实例,a指向该实例,又把a的指向给person1,导致person
//也指向此时生成的person实例
Person person2 = tc1.setA(234, "figo");//tc1对象内部再次运行了set方法,又生成了一个person实例,导致a变量指向新的实例,person2也指向该实例。
System.out.println(tc1.getA());
System.out.println(person1);
System.out.println(person2);
}
}
输出:
mockitodemo.Person@7852e922
mockitodemo.Person@4e25154f
mockitodemo.Person@7852e922
2、常用注解:
(1)Service
@Service注解用于类上,标记当前类是一个service类,加上该注解会将当前类自动注入到spring容器中,不需要再在applicationContext.xml文件定义bean了。
自动扫描路径下面的包的时候,如果一个类带了@Service注解,将自动注册到Spring容器,不需要再在applicationContext.xml文件定义bean了,类似的还包括@Component、@Repository、@Controller。
@Service("courseDAO")
@Scope("prototype")
public class CourseDAOImpl extends HibernateDaoSupport implements CourseDAO{
...
}
然后可以在其他类中注入调用:
@Autowried
private CourseDAOImpl courseDAOImpl;