Spring5笔记 (二) IOC操作Bean管理(基于注解方式)

304 阅读1分钟

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();
}