Spring实践第六天(Spring全注解的方式)

Posted 山川湖海*

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring实践第六天(Spring全注解的方式)相关的知识,希望对你有一定的参考价值。

说明

如图,项目目录:

 

 

 

注解的方式:

1.目标:省略掉在xml中配置bean!

2.方式

  • 先在主配置文件,告知要开启注解模式:<context:annotation-config/>
  • 在相关的类的方法上加注解

 

 

 

 

一、在xml文档中加入<context:component-scan base-package="com.nenu"/>

 如果要使用注解,首先要在xml文件中配置注解模式(使项目允许使用注解):

   在applicationContext加入<context:annotation-config/>标签:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

<!-- 开启扫描 --> <context:component-scan base-package="com.nenu"/> </beans>

 

 

 

 

二、添加注解

1.UserDaoImpl

  添加了@Component标签,因为是DAO层,所以也可@Repository标签:

package com.nenu.dao.impl;

import com.nenu.dao.UserDao;
import org.springframework.stereotype.Component;

@Component
public class UserDaoImpl implements UserDao {
    @Override
    public void add() {
        System.out.println("UserDaoImpl add……");
    }
}

相当于配置了<bean id="userDaoImpl" class="com.nenu.dao.impl.UserDaoImpl"/>

 

 

2.UserServiceImpl

  添加了@component标签,setter里面Resourse标签的name改为userServiceImpl

(因为是自动配置的,所以dao层的对象名字直接就是UserServiceImpl类名首字母小写)

当然,由于是Service层的逻辑,也可以用@Service:

 

package com.nenu.service.impl;

import com.nenu.dao.UserDao;
import com.nenu.dao.impl.UserDaoImpl;
import com.nenu.service.UserService;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;

@Component
public class UserServiceImpl implements UserService {
    private UserDao userDao;//面向接口

    @Override
    public void add() {
        System.out.println("UserServiceImpl add……");
        userDao.add();
    }

//    这是一个setter方法,设置userDao属性的值
    @Resource(name = "userDaoImpl")
    public void setUserDao(UserDaoImpl userDao) {
        this.userDao = userDao;
    }

//    这是构造方法,设置userDao属性的值
    public UserServiceImpl(UserDao userDao) {
        this.userDao = userDao;
    }

    public UserServiceImpl(){}

}

相当于配置<bean id="userServiceImpl" class="com.nenu.service.impl.UserServiceImpl"/>

 

 

3.测试

package com.nenu;

import com.nenu.service.UserService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class IocTest {
    @Test
    public void UserTest(){
        //1.配置容器
        ApplicationContext applicationContext =
                new ClassPathXmlApplicationContext("applicationContext.xml");
        //2.取出容器中bean
        UserService userService =
                (UserService) applicationContext.getBean("userServiceImpl");
        //3.调用
        userService.add();
    }
}

取出容器中bean时,bean的指定名字别忘了改奥~

  通过!!!

 

 

 

 

三、常用注解及总结

1.常用注解:

注解解释
@Controller 应用在MVC层(控制层),DispatcherServlet会自动扫描注解了此注解的类,然后将web请求映射到注解了@RequestMapping的方法上。
@Service 应用在service层(业务逻辑层)
@Reponsitory 应用在dao层(数据访问层)
@Component

相当于一个默认的注解:<bean id="xxxxx" class="xxxxx"/>

 

2.总结:

 

 

PS:附上昨天bean的自动装配链接,今天的看不懂建议同时参考昨天的博客:

Spring实践第五天(基于注解实现bean的自动装配)

 到此Spring的全注解就完成啦!小伙伴们有问题欢迎一起探讨!加油~

 

以上是关于Spring实践第六天(Spring全注解的方式)的主要内容,如果未能解决你的问题,请参考以下文章

第六节——spring注解开发

关于Spring注解开发教程,打包全送你

使用全注解配置Spring MVC+Spring +MyBatis框架,带事务配置。

mybatis使用全注解的方式案例(包含一对多关系映射)

寒假实践第六天

SpringSpringMVCMyBatis 的全注解方式整合