基于注解进行bean的装配

基于注解进行bean的装配

Ioc容器中添加节点:context:annotation-config/

IOC通过扫描classpath中的bean(类/组件),加载到IOC中并管理,不需要把bean显示配置到文件中。

@Component给类添加一个组件注解,意思是该类需要被ioc容器管理。

@Autowired,表示注入功能,默认是按照类型注入,如果有两个以上的类型就会出现异常,此时可用用 @Qualifier("userService"),指定需要注入那个bean

@Resource(name="userService"):表示注入功能需要指定要被注入的bean的ID。

注解分层

@Component(""):任何类需要被管理,都可以使用该注解。

@Controller(""):标识控制器

@Service(""):标识业务层

@Repository(""):标识持久层

基于classpath实现依赖注入

base-package="包名">/context:component-scan

包名可以写组件共有的父包。

-------------------------------------------------------------------------------------------------------------------------

 

UserDao

package com.henu.dao;
​
/**
 * @author George
 * @description
 **/
public interface UserDao {
    void insert();
}

UserDaoImpl

package com.henu.dao;
​
import org.springframework.stereotype.Repository;
​
/**
 * @author George
 * @description
 **/
@Repository("userDaoImpl")
public class UserDaoImpl implements UserDao {
    public void insert() {
        System.out.println("userDao:insert()>>>>");
    }
}

UserService

package com.henu.service;
​
/**
 * @author George
 * @description
 **/
public interface UserService {
    void insert();
}

UserServiceImpl

package com.henu.service;
​
import com.henu.dao.UserDao;
import com.henu.dao.UserDaoImpl;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
​
import javax.annotation.Resource;
​
/**
 * @author George
 * @description
 **/
​
@Controller("userServiceImpl")
public class UserServiceImpl implements UserService {
​
    @Resource(name = "userDaoImpl")
    public UserDao userDao;
​
    public void insert() {
        System.out.println("UserService.insert()+++++");
        userDao.insert();
    }
​
    public UserDao getUserDao() {
        return userDao;
    }
​
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
}

UserController

package com.henu.controller;
​
import com.henu.service.UserService;
import org.springframework.stereotype.Component;
​
import javax.annotation.Resource;
​
/**
 * @author George
 * @description
 **/
@Component("userController")
public class UserController {
    @Resource(name = "userServiceImpl")
    public UserService userService;
    public void execute(){
        System.out.println("userController");
        userService.insert();
    }
}

applicationContext.xml



    

【注】

基于注解进行bean的装配_第1张图片

 

Test

package com.henu;
​
import com.henu.controller.UserController;
import org.springframework.context.support.ClassPathXmlApplicationContext;
​
/**
 * @author George
 * @description
 **/
public class Test {
    public static void main(String[] args) {
        //加载spring IoC配置文件
        //ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
        ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
        //获取控制器对象
        UserController bean = context.getBean(UserController.class);//ctrl + alt + v
        //调用控制器方法
        bean.execute();
        //关闭ioc容器
        context.close();
    }
}

运行结果:

userController
UserService.insert()+++++
userDao:insert()>>>>

你可能感兴趣的:(基于注解进行bean的装配,spring)