1.Spring针对Bean管理中创建对象提供注解
(1) @Component
(2) @Service
(3) @Controller
(4) @Repository
2基于注解方式实现对象创建
第一步:开启组件扫描
<context:component-scan base-package="com.zhu"></context:component-scan>
第二步:创建类,在类上面添加创建对象注解
import org.springframework.stereotype.Component;
// value值不写默认就是类名小写
@Component(value = "userService")
public class UserService {
public void add(){
System.out.println("service...addd");
}
}
@Test
public void testService() {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
UserService userService = context.getBean("userService", UserService.class);
userService.add();
}
3.基于注解方式实现属性注入
(1) @AutoWired: 根据属性类型进行自动装配
第一步 创建dao对象和service对象,在类中创建注解
第二部 在service中注入dao对象,在service类添加dao属性,在属性上使用注解。
@Repository
public class UserDaoImpl implements UserDao{
@Override
public void add() {
System.out.println("userDao add");
}
}
@Service
public class UserService {
@Autowired
private UserDao userDao;
public void add() {
System.out.println("service...addd");
userDao.add();
}
}
(2) @Qualifier: 根据属性名称注入要和@AutoWired一起使用(针对多个接口实现类)
@Repository(value = "userDaoImpl1")
public class UserDaoImpl implements UserDao{
@Override
public void add() {
System.out.println("userDao add");
}
}
@Service
public class UserService {
@Autowired
@Qualifier(value = "userDaoImpl1")
private UserDao userDao;
public void add() {
System.out.println("service...addd");
userDao.add();
}
}
(3) @Resource: 可以根据类型,也可以根据名称注入 这个包是
根据类型注入
@Service
public class UserService {
// @Autowired
// @Qualifier(value = "userDaoImpl1")
@Resource//根据类型注入
private UserDao userDao;
public void add() {
System.out.println("service...addd");
userDao.add();
}
}
根据名称注入
@Resource(name = "userDaoImpl1")
(4)@Value:注入普通类型
4.完全注解开发
(1) 创建配置类,替代XML配置文件
@Configuration //作为配置类,替代xml
@ComponentScan(basePackages = {"com.zhu"})
public class SpringConfig {
}
(2) 修改test文件,使用AnnotationConfigApplicationContext加载配置类
@Test
public void testService2(){
ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
UserService userService = context.getBean("userService", UserService.class);
userService.add();
}