Java进阶之Spring的学习——注解开发

在Spring中,尽管使用配置文件可以实现Bean的装配工作,但如果应用中有很多的Bean时,会导致XML文件过于臃肿,给后续的维护和升级工作带来一定的困难。为此,Spring提供了对Annotation(注解)技术的全面支持。

基于Annotation的装配

Spring中定义了一系列的注解,常用的注解如下所示。

  • @Component:可以使用此注解描述Spring中的bean
  • @Repository:用于数据访问层(DAO层)的类标识为Spring中的bena,但它是一个泛化的概念,仅仅表示一个组件(Bean)并可以作用在任何层次。使用时只需将相应注解标注在相应类上即可。
  • @Service:通常作用字业务层(Service层),用于将业务层的类标识为Spring中的Bean,其功能与@Component相同。
  • @Controller:通常作用在控制层(如SpringMVC的Controller),用于将控制层的类标识为Spring中的Bean器功能与 @Component相同。

@Autowired:对于bean的属性变量,属性的Setter方法及构造方法进行标注,配合对应的的注解完成bean的自动配置工作。默认按照Bean实例类型装配。
@Resource:其作用与Autowired一样,其区别在于@Autowired默认按照Bean类型装配,而@Resource默认按照Bean的实例名称进行装配。@Resource中有两个重要属性:name和type。Spring将name属性解析为Bean的实例名称,type属性解析为Bean实例类型。如果指定name属性,则按照实例名称进行装配;如果指定type属性,则按照Bean类型进行装配;如果都无法匹配,则抛出异常。
@Qalifier:与@Autowired注解配合使用,会将默认的按Bean类型装配修改为按Bean实例名进行装配,Bean的实例名称由@Qualifier的注解参数指定。

上面几个注解中虽然@Repository、@Service与@Controller功能与@Component注解的功能相同,但是为了使标注类本身用途更加清晰,建议在实际开发中使用@Repository、@Service与@Component分别对类进行标注。

注解的使用

在com.shen.Dao包下创建IUser_uDao接口,定义一个 findUserById方法


public interface IUser_uDao {
    public User_u findUserById(Integer id) ;
}

在该包下创建创建实现类UserDaoImpl


@Repository
public class UserDaoImpl implements IUser_uDao {

    @Override
    public User_u findUserById(Integer id) {
        User_u user_u = new User_u();
        user_u.setId(10);
        user_u.setPassword("13124124123");
        user_u.setUsername("张三");

        return user_u;
    }
}

在UserDaoImpl类上使用@Repository注解将UserDaoImpl类标识为Spring的bean,其写法相当于配置文件中

   <bean name="userDaoImpl " class="com.shen.Dao.Impl.UserDaoImpl"/>

的编写

假设findUserById方法是从数据库查出数据,然后将其封装为User_u对象并返回。

在com.shen下创建了一个IUserService 接口

public interface IUserService {
    public User_u findUserById(Integer id);

}

为IUserService 创建实现类


@Service
public class User_uService implements IUserService {
    @Autowired
    IUser_uDao userUDao;

    @Override
    public User_u findUserById(Integer id) {
        return userUDao.findUserById(id);
    }
}

首先使用@Service将User_uService 类标识为Spring中的bean,这相当于配置文件中

 <bean name="user_uService" class="com.shen.service.impl.User_uService"/>

的编写。

然后使用@Autowired标注在userUDao属性上,这相当于

	<property name="userUDao" ref "userDaoImpl "/>

的写法,可以理解为去容器中找到UserDao类型的bean,并注入给本类的userUDao属性。

在com.shen包下创建controller包并创建UserController类


@Controller
public class UserController {
    @Autowired
    User_uService user_uService;
    public User_u showUser(){

        return user_uService.findUserById(1);
    }
}

在UserController 类中 使用@Controller将该类标记为Spring中的bean,这相当于

<bean name="userController " class="com.shen.controller.UserController"/>

的编写。 将@Autowired注解标记在user_uService属性上,spring就会将User_uService 类型的Bean自动注入到user_uService属性中。

创建application2.xml 文件 并增加 <context:component-scan base-package=“com.shen”/> (对包路径下的所有Bean文件进行扫描)

创建测试类:

public class Test {
    @org.junit.Test
    public void TestUser(){
        ApplicationContext applicationContext =
                new ClassPathXmlApplicationContext("application2.xml");
        UserController bean =  applicationContext.getBean(UserController.class);
        System.out.println(bean.showUser());

    }
}

运行结果如下:

在这里插入图片描述

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

200Ok。。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值