目录
0. 图文解析
1. @Component
xml中的< bean >标签(UserServiceImpl类的对象)
<bean id="userService" class="com.jd.service.impl.UserServiceImpl"/>
用注解代替
@Component("userService")
public class UserServiceImpl {
}
解析:只需要在相应的类的上边写上@Component(“userService”),即可代替xml中的bean标签(双引号中的userService为bean标签中的id值)
2. @Controller @Service @Repository
解析:与@Component的使用方法相同,只不过@Controller使用在web层,@Service使用在service层,@Repository使用在dao层,使注解的可读性更强
3. @Autowired @Qualifier
xml中的< bean >标签(UserServiceImpl类中注入了id为userDao的bean标签所指定的UserDaoImpl类)
<!--UserDaoImpl类-->
<bean id="userDao" class="com.jd.dao.impl.UserDaoImpl" ></bean>
<!--UserServiceImpl类-->
<bean id="userService" class="com.jd.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean>
用注解代替
public class UserServiceImpl{
//<property name="userDao" ref="userDao"></property>
@Autowired//按照数据类型从Spring容器中进行匹配
@Qualifier("userDao")//按照id值从容器中匹配的,但是@Qualifier需要和@Autowired配合使用
private UserDao userDao;
/*public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}*/
}
解析:在UserServiceImpl类的userDao变量上边直接添加@Autowired和@Qualifier(“userDao”)
@Autowired 是按照数据类型从Spring容器中进行匹配
@Qualifier(“userDao”) 是按照id值从容器中匹配的,但是@Qualifier需要和@Autowired配合使用
因为使用注解,所以不在需要使用set方法注入了,所以set方法可以省去
4. @Resource
解析:@Resource = @Autowired + @Qualifier
例:以3.@Autowired @Qualifier中的代码为例,可以写成如下的代码
public class UserServiceImpl{
//<property name="userDao" ref="userDao"></property>
//@Autowired//按照数据类型从Spring容器中进行匹配
//@Qualifier("userDao")//按照id值从容器中匹配的,但是@Qualifier需要和@Autowired配合使用
@Resource(name="userDao")
private UserDao userDao;
/*public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}*/
}
5. @Value
1.给driver赋值abc
public class UserServiceImpl implements UserService {
@Value("abc")
private String driver;
}
2.给driver赋值引用
- 引用jdbc.properties中的driverClassName的值赋值给driver
public class UserServiceImpl implements UserService {
@Value("${jdbc.driverClassName}")
private String driver;
}
- applicationContext.xml中导入了jdbc.properties
<context:property-placeholder location="jdbc.properties"></context:property-placeholder>
- jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
6.@Scope
使用方法:直接放在类的上边
作用:与bean标签的scope属性作用相同
@Scope("singleton")
public class UserServiceImpl {
}
@Scope("prototype")
public class UserServiceImpl {
}
7. @PostConstruct @PreDestroy
使用方法:放在相应方法上边
@PostConstruct相当于bean标签中的init-method
@PreDestroy相当于bean标签中的destroy-method
public class UserServiceImpl {
@PostConstruct
public void init(){
System.out.println("Service初始化方法");
}
@PreDestroy
public void destroy(){
System.out.println("Service对象销毁方法");
}
}
8. 组件扫描
使用注解进行开发时,需要在applicationContext.xml中配置组件扫描,作用是指定哪个包及其子包下的Bean需要进行扫描以便识别使用注解配置的类、字段和方法。
注解的组件扫描
<context:component-scan base-package="com.jd"></context:component-scan>