标签:项目 展开 注册 介绍 source 自动注入 访问 扫描 使用
在如今Spring Boot和Spring Cloud风生水起,Spring注解开发已成为主流开发模式,本篇将介绍常用的组件注册方式。我们所说的组件注册其实就是把bean对象交给ioc容器管理。
常用的两个方式——组件标注注解(@Controller、@Service、@Repository 和@Component) + 包扫描注解(@ComponentScan) 。
@ComponentScan:根据自定义的规则,自动扫描 IOC 容器中所有组件。
这几个注解主要用于标注Spring要进行实例化的类,一旦在某个类的上面标注了这样的注解,如果是单例模式的话,那么Spring在初始化的时候,就会将这些类实例化,而对于非单例模式的类,不取决于Spring容器本身,往往是客户端进行请求的时候,进行创建实例(Spring创建的)。@Component可以代替@Repository、@Service、@Controller,因为这三个注解是被@Component标注的,当组件不好归类的时候,我们可以使用这个注解进行标注。
思考:Spring怎么知道哪些Java类应该当作bean类处理?
答:使用配置文件或者注解的方式进行标识需要处理的java类,这些被标注的类被Spring识别为bean类。
@Resource:按照名称(name)进行注入。该注解属于jdk中的注解,但是在项目中使用比较广泛。
@Autowired:按照类型匹配自动注入。
@Inject:和@Autowired注解一样也是按类型注入bean,但是没有required属性。
以上三个注解主要用于为类中属性注入值,它们可以将(上面四个组件标注注解标注的类在Spring中实例化后的对象)装配到某些类的属性中。
例如,使用@Repository注册UserDao的组件到Spring容器:
@Repository
public interface UserDao {
User getUserById(Long userId);
}
使用@Autowired把组件UserDao装配到UserServiceImpl实现类中:
@Service
public class UserServiceImpl implements UserService {
private static Logger logger = LoggerFactory.getLogger(UserServiceImpl.class);
@Autowired
private UserDao userDao;
@Override
public User getUserById(Long userId) {
logger.info("--------*****-----------");
return userDao.getUserById(userId);
}
}
这里,@Service将UserServiceImpl注册成组件托管给Spring容器。
由于本文只是综述性质的文章,这里就不展开讨论了。如有不当之处,请留言讨论。
标签:项目 展开 注册 介绍 source 自动注入 访问 扫描 使用
原文地址:https://www.cnblogs.com/east7/p/13215997.html