开启使用注解代理配置
在配置文件中添加如下(spring会自动扫描改包下的所有注解):
<context:component-scan base-package="包的全路径"></context:component-scan>
将对象注册到容器中
//@Component("user") //当分不清时用它
//@Controller("user") //web层
//@Service("user") //service层
@Repository //dao层 //不写名称默认是类名小写
@Scope(scopeName = "prototype") 默认是单例singleton | 多例prototype | request | session
public class User {
private Integer id;
private String name;
private String password;
@Autowired //默认是按照类型装配注入的,如果想按照名称来转配注入,则需要结合@Qualifier一起使用;
// @Qualifier("car") //告诉spring装载哪一个对象 (当一个类有两个名称时,配合自动装载使用)
// @Resource(name = "car") //默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入;
// @Resource注解是又J2EE提供,而@Autowired是由Spring提供;
private Car car; //另一个被Spring管理的类
private String[] myArray;
private List<Object> myList;
@PostConstruct //指定初始化方法,spring在对象创建之后立即调用
public void init() {
System.out.println("init......");
}
@PreDestroy //指定摧毁方法,spring容器在关闭的时候 会销毁所有容器中的 对象之前调用
public void destroy() {
System.out.println("destroy......");
}
public User() {
}
//
。。。省略get | set 方法
//
}
属性注入
@Repository
public class Car {
@Value("BMW") //通过反射的field赋值,破坏了封装性
private String name;
private String color;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
@Value("bule")//通过set方法赋值,推荐使用
public void setColor(String color) {
this.color = color;
}
}