实体类
package indi.yxq.spring.entity;
public class User {
private Integer user_id;
private String user_name;
public User() {
System.out.println("User类构造方法");
}
public void setUser_id(Integer user_id) {
this.user_id = user_id;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
@Override
public String toString() {
return "User [user_id=" + user_id + ", user_name=" + user_name + "]";
}
}
package indi.yxq.spring.entity;
public class UserDao {
private User user;
public UserDao() {
super();
// TODO Auto-generated constructor stub
}
public void setUser(User user) {
this.user = user;
}
@Override
public String toString() {
return "UserDao [user=" + user + "]";
}
}
package indi.yxq.spring.entity;
public class UserHome extends UserDao{
private UserDao userdao;
public UserHome() {
}
public void setUserdao(UserDao userdao) {
this.userdao = userdao;
}
@Override
public String toString() {
return "UserHome [userdao=" + userdao + "]";
}
}
测试类
package indi.yxq.spring.test;
import indi.yxq.spring.entity.User;
import indi.yxq.spring.entity.UserDao;
import indi.yxq.spring.entity.UserHome;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
///Resource
@RunWith(SpringJUnit4ClassRunner.class)
//src下找:"classpath:Resource/application.xml" 或"/Resource/application.xml"
@ContextConfiguration("classpath:Resource/application.xml")
public class Mytest {
//注解实例字段
@Autowired
User user;
@Autowired
UserDao userDao;
@Autowired
UserHome userHome;
@Autowired
BeanFactory beanfactory;
@Autowired
ApplicationContext context;
@Test
public void test(){
user=beanfactory.getBean("myuser",User.class);
user.setUser_id(0);
user.setUser_name("张三");
System.out.println(user.toString());
user=beanfactory.getBean("myuser",User.class);
user.setUser_id(1);
user.setUser_name("王五");
System.out.println(user.toString());
//使用bean里面的name定义值访问,多个值用逗号隔开,记住id必须唯一的
user=context.getBean("111",User.class);
System.out.println(user.toString());
user=context.getBean("/log",User.class);
System.out.println(user.toString());
//没有使用bean里面的属性抽取注入----ref
userDao=beanfactory.getBean("myuserDao",UserDao.class);
System.out.println("没有使用ref:"+userDao.toString());
//使用bean里面的属性抽取注入----ref
userDao=beanfactory.getBean("userDao",UserDao.class);
System.out.println("使用ref:"+userDao.toString());
//该bean.id里面abstract=true,指只抽取对象属性注入,不抽取对象,如果使用bean.id获取对象是会报错的,
//要获取该bean.id的对象就通过parent继承bean.id的属性
/*userDao=beanfactory.getBean("userDao1",UserDao.class);
System.out.println("bean.id里面abstract=true:"+userDao.toString());
*/
//----parent继承bean.id的属性,该bean.id不实例对象,abstract=true
userDao=beanfactory.getBean("myuserDao1",UserDao.class);
System.out.println("使用parent继承属性:"+userDao.toString());
//----parent继承bean.id的属性,该bean.id不实例对象,同时使用ref引用注入属性
userHome=beanfactory.getBean("myuserHome",UserHome.class);
System.out.println("使用parent继承属性:"+userHome.toString());
}
/**
* 注入属性的继承
* 使用bean里面的属性抽取注入----ref,注意:注入的属性必须有set该属性
* 注意:Java代码是Java代码,配置spring是spring,不要混淆了
*
* */
}
spring配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="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.xsd" default-lazy-init="default">
<!-- 方案一 --><!-- scope="prototype"多例模式,默认单例scope="singleton" -->
<bean id="myuser" name="111,/log" class="indi.yxq.spring.entity.User" />
<bean id="myuserDao" class="indi.yxq.spring.entity.UserDao"/>
<!-- 方案二-->
<bean id="userDao" class="indi.yxq.spring.entity.UserDao" >
<property name="user" ref="myuser"></property>
</bean>
<!-- 方案三-使用了abstract该类的就失效了class可以不用了,class=任何都没有,可以等但是没有用 -->
<bean id="userDao1" abstract="true" >
<property name="user" ref="myuser"></property>
</bean>
<!-- 方案四 使用parent继承指定bean.id对象注入该属性-->
<!-- parent==bean.id:继承那个bean的属性 -->
<bean id="myuserDao1" parent="userDao1" class="indi.yxq.spring.entity.UserDao"/>
<!-- 继续继承 -->
<!-- parent==bean.id:继承那个bean.id对象,同时使用ref给其他属性注入 -->
<!-- Java代码中如果该类extends父类,bean配置的属性继承如果本类找不到就回去父类找有没有该属性set,并注入属性信息如果都没有就会报错 -->
<bean id="myuserHome" parent="myuserDao1" class="indi.yxq.spring.entity.UserHome">
<property name="userdao" ref="myuserDao"></property>
</bean>
</beans>
这行业就是学习什么都不要急,要一点一点的来,自己领悟就成功一半了,经后天的努力我相信你可以的,加油老铁!