一.Component组件
修饰一个类,将这个类交给spring管理
这个类有三个衍生注解(功能类似),修饰类
@Controller:修饰web层
@Service:修饰service层
@Dao:修饰dao层
二.属性注入的注解
1.普通属性
@value
2,对象属性
(1)@Autowired:设置对象类型的属性的值,是按照类型进行属性注入的
我们习惯按照名字进行属性注入
所以一般是Autowired和Qualifier一起完成按照名称属性注入
(2)@Resource 按照名称进行属性注入
注解步骤:
1.在spring.xml中配置扫描组件
<!--使用spring IOC注解开发,配置组件扫描(哪些包下的类使用IOC注解)-->
<context:component-scan base-package="org.qingyu.dao"></context:component-scan>
2.编写dao层
public interface HaohanDao {
void add();
}
@Repository("HaohanDao")
//相当于在spring.xml中<bean id="HaohanDao" class="org.qingyu.dao.HaohanImpl"></bean>
public class HaohanImpl implements HaohanDao {
@Value("张三")
private String name;
@Override
public void add() {
System.out.println("添加..."+name);
}
}
3.编写service层
public interface HaohanService {
void add();
}
这里的@Resource是属性注入
@Service("HaohanService")
public class HaohanServiceImpl implements HaohanService {
@Resource
private HaohanDao haohanDao;
@Override
public void add() {
System.out.println("service...");
haohanDao.add();
}
}
4.测试
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
HaohanDao haohanDao = (HaohanDao) applicationContext.getBean("HaohanDao");
haohanDao.add();
三.Bean的其他注解
1.Bean 的生命周期的注解
PostConstruct:初始化注解
PreDestroy:销毁方法
2.Bean的作用范围注解
@Scope
Singleton
Prototype
Request
Session
Globlsession
四.IOC注解和XML开发比较
1.XML和注解比较
XML可以适用于任何场景,结构清晰,方便维护
注解,当类不是自己提供的时候不能使用
2.XML和注解的整合开发
类都在XML里写,属性注入用注解写
扫描是为了扫描类上的注解,当类上没有注解时就不扫描,使用属性注入的注解
<context:annotation-config/>
<bean id="UserDao" class="org.qingyu.dao.UserDao"></bean>
<bean id="UserService" class="org.qingyu.service.UserService"></bean>
public class UserDao {
public void add(){
System.out.println("userDao...");
}
}
public class UserService {
@Resource
private UserDao userDao;
public void add(){
System.out.println("userService...");
userDao.add();
}
}