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的全注解就完成啦!小伙伴们有问题欢迎一起探讨!加油~

原文地址:https://www.cnblogs.com/yangf428/p/12302982.html

时间: 2024-10-21 02:03:17

Spring实践第六天(Spring全注解的方式)的相关文章

spring+hibernate+Struts2 整合(全注解及注意事项)

最近帮同学做毕设,一个物流管理系统,一个点餐系统,用注解开发起来还是很快的,就是刚开始搭环境费了点事,今天把物流管理系统的一部分跟环境都贴出来,有什么不足的,请大神不吝赐教. 1.结构如下 2.jar包如下 3.首先是spring.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"

SSH(Struts2+Spring+Hibernate)框架搭建流程&lt;注解的方式创建Bean&gt;

此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblogs.com/wkrbky/p/5912810.html 一.Hibernate(数据层)的搭建: 实现流程 二.Spring(注入实例)的使用: 实现流程 三.Struts2(MVC)的搭建: 实现流程 这里注意一点问题: Struts2与Hibernate在一起搭建,antlr包,有冲突.MyE

Spring配置形式之基于注解的方式

在classpath中扫描组件 组件扫描(component scanning): Spring 能够从 classpath 下自动扫描, 侦测和实例化具有特定注解的组件. 特定组件包括: @Component: 基本注解, 标识了一个受 Spring 管理的组件 @Respository: 标识持久层组件 @Service: 标识服务层(业务层)组件 @Controller: 标识表现层组件 对于扫描到的组件, Spring 有默认的命名策略: 使用非限定类名, 第一个字母小写. 也可以在注解

将spring管理的bean使用注解的方式注入到servlet中

Filter和Servlet中不能直接注解使用spring的bean,因为这两个都是servlet容器维护管理的,当然也有实现方法,如下: 1.创建一个AbstractServlet 抽象类,让你的所有servlet继承于此类: import java.io.IOException; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpSe

基于maven的SpringMVC,Spring,MyBatis的全注解配置

首先创建maven项目 1.maven添加各种依赖包 <!-- 数据库连接池 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> <!-- Mybatis与Spring的包 --> <dependency>

springMVC,spring,mybatis全注解搭建框架--第一步,让框架跑起来

自己从事java开发工作也有一年多了,自己却没有亲手搭建一个完整的框架.于是今天自己动手搭建一个,过程中遇到一些问题,倒腾了大半天终于搞定了. 现在给大家分享一下过程,自己也记录下来,以后学习参考使用. 我采用全注解的方式去搭建springMVC,spring,mybatis框架,同时自己也可以去配置xml,但是主要还是通过注解的方式来实现.参考的网上其它大神分享的方法,多多少少有些地方写的不清楚,也并不是完全通过注解去实现的. springboot可以真正说是零配置吧,后面我将给大家演示spr

Spring Boot读取配置的几种方式

读取application文件 在application.yml或者properties文件中添加: info.address=USAinfo.company=Springinfo.degree=high @Value注解读取方式 12345678910111213141516171819202122232425262728293031323334353637383940 import org.springframework.beans.factory.annotation.Value;impo

springmvc3.2+spring+hibernate4全注解方式整合(四)

以上是工程文件,下面开始测试 package test.testservice; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.t

springmvc3.2+spring+hibernate4全注解方式整合(一)

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.