Spring框架学习(三)Spring的注解开发

Spring-注解开发

1.在applicationContext.xml中添加这一句代码能够让IOC容器加载的时候去扫描对应4种注解的类:

<context:component-scan base-package="com.bjsxt.tmall"></context:component-scan>
<?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.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 在IOC容器加载的时候,自动扫描tmall包及子包中拥有 以下4种注解的类:
        @Respository - 对应DAO
        @Service - 对应Service
        @Controller - 对应Action
        @Component - 其他的情况
     -->
    <context:component-scan base-package="com.bjsxt.tmall"></context:component-scan>
</beans>

2.现在来开发各层的代码:

(1)首先是action:action依赖于service,那么问题来了。我们如何才能去标注这个类是action呢?怎么才能让声明的service类去动态获取对象呢?

@Controller:能够去标注 这是控制层的类。在IOC容器被创建的时候,IOC会去扫描被这个注释标注的类并且创建该类。

 @Controller                    //Spring对action层的注释

@Resource(IOC注入) : 被标注的属性会根据属性名(类名小写的属性名)来从IOC容器中找到对于的类,使用反射来new出对象并注入到这个属性里面

     @Resource    //IOC注入
     private CashierService cashierService = null;


@SuppressWarnings("all")      //忽略警告
@Controller                    //Spring对action层的注释
@Scope(value="prototype")     //标注该类是多例模式Spring默认单例,而Action是一个线程请求一个对象。
public class CashierAction {
    //Action依赖Service
    @Resource    //IOC注入
    private CashierService cashierService = null;

(2) service和action同样 如法炮制

@Service    //Spring对service层的注释


1 @Service    //Spring对service层的注释
2 public class CashierService {
3     //servoce依赖调用dao层
4     @Resource    //IOC容器注入
5     private CashierDao cashierDao = null;

(3)dao层是访问数据库层,没有依赖的层但是却会依赖entity实体类

  @Resource:对dao层的注释。

  @Resource:IOC注入

    但是这里注入的并不是MVC中的类,是一个entity实体类,这个实体类并不是用注解配置的,而是使用applicationContext.xml配置的!并且还是使用配置文件配置,用注解的方式注入。

1 @Repository    //Spring对dao层的注释
2 public class CashierDao {
3     @Resource
4     private Dbinfo dbinfo = null;

applicationContext.xml配置实体类:

1  <bean id="dbinfo" class="com.wzh.common.Dbinfo">
2         <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
3         <property name="url" value="123"></property>
4         <property name="username" value="root"></property>
5         <property name="password" value="123"></property>
6     </bean>

在这里可以看出,注解和配置文件并不冲突,是可以配合使用的。

  注解开发,比配置文件开发简单很多,但是有得就有失。它失去的就是:注解开发时在java类当中进行的,它不能像配置文件一样直接改配置文件来动态修改Java代码,但是尽管没有使用配置文件方式可维护性那样高,但其实修改Java代码 也只是修改变量名而已

时间: 2024-10-08 18:41:37

Spring框架学习(三)Spring的注解开发的相关文章

spring框架学习(五)注解

spring框架学习(五)注解 注解Annotation,是一种类似注释的机制,在代码中添加注解可以在之后某时间使用这些信息.跟注释不同的是,注释是给我们看的,java虚拟机不会编译,注解也是不编译的,但是我们可以通过反射机制去读取注解中的信息.注解使用关键字@interface,继承java.lang.annotition.Annotition spring框架为我们提供了注解功能. 使用注解编程,主要是为了替代xml文件,使开发更加快速.但是,xml文件的使用就是解决修改程序修改源代码,现在

Spring框架学习02——Spring IOC 详解

1.Spring IOC的基本概念 IOC(Inverse of Control)反转控制的概念,就是将原本在程序中手动创建对象的控制权,交由Spring框架管理.当某个Java对象(调用者)需要调用另一个Java对象(被调用者)时,在传统编程模式下,调用者通常会采用“new 被调用者”的代码方式来创建对象.这种方式会增加调用者与被调用者之间的耦合性,不利于后期代码的升级与维护.当Spring框架出现后,对象的实例不再由调用者来创建,而是由Spring容器来创建.Spring容器会负责控制程序之

spring框架学习4:bean注解配置

在上一篇中学习了如何使用spring来管理对象,但是再实际的开发中,再spring配置文件中配置bean元素是非常繁琐的,因此实际开发中使用注解来配置spring.具体操作如下: 在配置文件中,扫描实体类包: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=&qu

spring框架学习(三)——AOP( 面向切面编程)

AOP 即 Aspect Oriented Program 面向切面编程 首先,在面向切面编程的思想里面,把功能分为核心业务功能,和周边功能. 所谓的核心业务,比如登陆,增加数据,删除数据都叫核心业务 所谓的周边功能,比如性能统计,日志,事务管理等等 周边功能在Spring的面向切面编程AOP思想里,即被定义为切面 在面向切面编程AOP的思想里面,核心业务功能和切面功能分别独立进行开发 然后把切面功能和核心业务功能 "编织" 在一起,这就叫AOP 原理图 1. 功能分两大类,辅助功能和

spring框架学习(三)junit单元测试

spring框架学习(三)junit单元测试 单元测试不是头一次听说了,但只是听说从来没有用过.一个模块怎么测试呢,是不是得专门为一单元写一个测试程序,然后将测试单元代码拿过来测试? 我是这么想的.学到spring框架这才知道单元测试原来是这么回事儿. 下面以上一篇文章中set注入的第一个实例为测试对象.进行单元测试. 1,拷贝jar包 junit-3.8.2.jar(4.x主要增加注解应用) 2,写业务类 [java] view plaincopyprint? public class Use

spring boot框架学习6-spring boot的web开发(2)

本章节主要内容: 通过前面的学习,我们了解并快速完成了spring boot第一个应用.spring boot企业级框架,那么spring boot怎么读取静态资源?如js文件夹,css文件以及png/jpg图片呢?怎么自定义消息转换器呢?怎么自定义spring mvc的配置呢?这些我们在公司都需要用的.这些怎么解决呢?在接下来的小节详细讲解这些.好了,现在开启spring boot的web开发第一节 本节主要: 1:InternalResourceViewResolver讲解 2:自动配置静态

spring boot框架学习7-spring boot的web开发(3)-自定义消息转换器

本章节主要内容: 通过前面的学习,我们了解并快速完成了spring boot第一个应用.spring boot企业级框架,那么spring boot怎么读取静态资源?如js文件夹,css文件以及png/jpg图片呢?怎么自定义消息转换器呢?怎么自定义spring mvc的配置呢?这些我们在公司都需要用的.这些怎么解决呢?在接下来的小节详细讲解这些.好了,现在开启spring boot的web开发第一节 本节主要: 1:自定义消息转换器 本文是<凯哥陪你学系列-框架学习之spring boot框架

Spring框架学习总结(上)

目录 1.Spring的概述 2.Spring的入门(IOC) 3.Spring的工厂类 4.Spring的配置 5.Spring的属性注入 6.Spring的分模块开发的配置 @ 1.Spring的概述 在学习SSM框架中,我建议初学者最好先学Spring框架,其次mybatis接着springMVC,先学mybatis当然也是可以的,今天我们就以绝对优雅的姿态闯进Spring世界,系好安全带,准备好了吗,出发了哦!!!咳咳....平时开发接触最多的估计就是IOC容器,它可以装载bean(所谓

Spring框架 AOP(三)

AOP理论概述 Aspect Oriented Programming 面向切面编程 业界 AOP 实际上 OOP (面向对象编程 ) 延伸 -- OOP编程语言. AOP设计思想 AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码(性能监视.事务管理.安全检查.缓存) 横向抽取代码复用,基于代理技术,在不修改原有对象代码情况下,对原有对象方法功能进行增强! ---- AOP 思想 Spring框架如何实现AOP Spring1.2 版本开始 开始支持AOP技术 (传统Spring AOP

Spring框架第三天

html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption