Spring使用教程(三)注解1

1:@component:基本注解,标识了一个受Spring管理的主键

2:@respository:标识持久层主键

3:@Service:标识服务层(业务层)主键

4:@Controller:标识表示层主键

Spring 有默认的命名策略: 使用非限定类名, 第一个字母小写. 也可以在注解中通过 value 属性值标识组件的名称

使用注解,需要在Spring的配置文件中声明:<context:component-scan>

base-package 属性指定一个需要扫描的基类包Spring 容器将会扫描这个基类包里及其子包中的所有类.

当需要扫描多个包时, 可以使用逗号分隔.

如果仅希望扫描特定的类而非基包下的所有类,可使用 resource-pattern 属性过滤特定的类

<context:include-filter> 子节点表示要包含的目标类  需要在<context:component-scan>配置use-default-filters="false"

<context:exclude-filter> 子节点表示要排除在外的目标类

–<context:component-scan> 下可以拥有若干个 <context:include-filter> 和 <context:exclude-filter> 子节点

<?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-4.0.xsd">
        <!-- 指定Spring IOC容器扫描的包 -->
        <!-- resource-pattern  扫描指定的资源 -->
        <!--  <context:component-scan base-package="com.test.spring.annotation"
            resource-pattern="controller/*.class"
        ></context:component-scan>-->

        <!-- exclude-filter 子节点指定排除那些指定表达式的组件 -->
        <!-- include-filter 子节点包含那些表达式的组件,需要配置 use-default-filters为false-->
        <context:component-scan base-package="com.test.spring.annotation" use-default-filters="false">
        <!--
            <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
            <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
             -->
             <!-- -
             <context:exclude-filter type="assignable" expression="com.test.spring.annotation.TestObject"/>
             -->
             <context:include-filter type="assignable" expression="com.test.spring.annotation.TestObject"/>
        </context:component-scan>
</beans>

package com.test.spring.annotation;

import org.springframework.stereotype.Component;

@Component
public class TestObject {

}

package com.test.spring.annotation.controller;

import org.springframework.stereotype.Controller;

@Controller
public class UserController {
    public void execute(){
        System.out.println("usercontroller");

    }
}

package com.test.spring.annotation.repository;

public interface UserRepository {
    public void save();
}

package com.test.spring.annotation.repository;

import org.springframework.stereotype.Repository;
//注解可以通过value属性值标识,bean在IOC容器中的name
@Repository("userRepository")
public class UserRepositoryImlpl implements UserRepository{

    public void save() {
        System.out.println("实现接口的save");
    }

}

package com.test.spring.annotation.service;

import org.springframework.stereotype.Service;

@Service
public class UserService {
    public void add(){
        System.out.println("USERSERVICE的 add");
    }
}

package com.test.spring.annotation;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.test.spring.annotation.controller.UserController;
import com.test.spring.annotation.repository.UserRepository;
import com.test.spring.annotation.repository.UserRepositoryImlpl;
import com.test.spring.annotation.service.UserService;

public class Main {
    public static void main(String[] args) {
        ApplicationContext con=new ClassPathXmlApplicationContext("beans_annocation.xml");
        TestObject to=(TestObject) con.getBean("testObject");
        System.out.println(to);

        UserService ser=(UserService) con.getBean("userService");
        System.out.println(ser);

        UserController ucon=(UserController) con.getBean("userController");
        System.out.println(ucon);

        UserRepositoryImlpl ur=(UserRepositoryImlpl) con.getBean("userRepository");
        System.out.println(ur);

    }
}
时间: 2024-10-26 02:49:17

Spring使用教程(三)注解1的相关文章

Spring Security教程(三):自定义表结构

在上一篇博客中讲解了用Spring Security自带的默认数据库存储用户和权限的数据,但是Spring Security默认提供的表结构太过简单了,其实就算默认提供的表结构很复杂,也不一定能满足项目对用户信息和权限信息管理的要求.那么接下来就讲解如何自定义数据库实现对用户信息和权限信息的管理. 一.自定义表结构 这里还是用的mysql数据库,所以pom.xml文件都不用修改.这里只要新建三张表即可,user表.role表.user_role表.其中user用户表,role角色表为保存用户权限

2017.3.31 spring mvc教程(三)请求映射(静态文件访问、拦截器)

学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变化比较大的功能. spring mvc教程(三)拦截器 1.Spring中的拦截器 (1)拦截器接口 Spring提供了拦截器接口.实现这个接口或继承这个类,就能实现自己的拦截器. 1 org.springframework.web.servlet.HandlerInterceptor接口 2 or

Spring知识点总结(三)之注解方式实现IOC和DI

    1. 注解概念        所谓注解就是给程序看的提示信息,很多时候都用来作为轻量级配置的方式.        关于注解的知识点,参看java基础课程中java基础加强部分的内容.    2. Spring中的注解        Spring除了默认的使用xml配置文件的方式实现配置之外,也支持使用注解方式实现配置,这种方式效率更高,配置信息清晰,修改更方便,推荐使用.                引入context名称空间:            在MyEclipse中导入spri

史上最简单的 Spring MVC 教程(十)

1 前言 在史上最简单的 Spring MVC 教程(九)中,咱们已经实现了图片的上传及显示功能,那么接下来,在本篇博文中,咱们更进一步,以实体类(Person)中的字段"name"和控制器(PersonController)中的方法 updatePersonList 为例,实现参数的校验功能. 2 注解示例 - 参数校验 老规矩,首先给出项目结构图: 在给出代码之前, 咱们先明确参数校验的步骤: 导入参数校验的 jar 包: 在实体上配置需要校验的属性: 在控制器的方法中用注解 @V

Spring MVC 教程

目录  一.前言二.spring mvc 核心类与接口三.spring mvc 核心流程图 四.spring mvc DispatcherServlet说明 五.spring mvc 父子上下文的说明 六.springMVC-mvc.xml 配置文件片段讲解 七.spring mvc 如何访问到静态的文件,如jpg,js,css 八.spring mvc 请求如何映射到具体的Action中的方法 九. spring mvc 中的拦截器:十. spring mvc 如何使用拦截器 十一. spri

[读后感]spring Mvc 教程框架实例以及系统演示下载

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 不要好意思,昨晚写的,睡着忘发了,后附是篇好文,赶紧w分享一下. 感脚着,俺好像做了件聪明事儿,却不知会不会遭到不理解. 转载的好文,是不会推荐到

Spring Data 系列(三) Spring+JPA(spring-data-commons)

本章是Spring Data系列的第三篇.系列文章,重点不是讲解JPA语法,所以跑开了JPA的很多语法等,重点放在环境搭建,通过对比方式,快速体会Spring 对JPA的强大功能. 准备代码过程中,保持了每个例子的独立性,和简单性,准备的源码包,下载即可使用.如果,对JPA语法想深入研究的话,直接下载在此基础上进行测试. 前言 Spring Data 系列(一) 入门:简单介绍了原生态的SQL使用,以及JdbcTemplate的使用,在这里写SQL的活还需要自己准备. Spring Data 系

spring入门教程——笔记

Spring学习笔记(1)----简单的实例 --------------------------------- 首先需要准备Spring包,可从官方网站上下载. 下载解压后,必须的两个包是spring.jar和commons-logging.jar.此外为了便于测试加入了JUnit包. 在Myeclipse中创建Java项目. 编写一个接口类,为了简单,只加入了一个方法. Java代码  1.package com.szy.spring.interfacebean;  2.  3.public

Spring的Bean管理(注解管理)

Spring注解的IOC入门步骤: 步骤一:下载spring的开发包 http://repo.spring.io/webapp/search/artifact/?0&q=spring-framework 解压:(Spring目录结构:) * docs:API和开发规范. * libs:jar包和源码. * schema:约束. 步骤二:创建Web项目,引入spring开发jar包 核心jar包四个:bean/Core/Context/Expression Language 两个开发包 : log

spring实战之使用注解装配

使用注解装配: 从spring2.5开始,Spring启用了使用注解自动装配Bean的属性,使用注解方式自动装配与在XML中使用 autowire 属性自动装配并没有太大区别,但是使用注解方式允许更细粒度的自动装配. Spring容器默认禁用注解装配.所以,在使用基于注解的自动装配前,需要在Spring配置中启用它,最简单的启用方式是使用spring的context命名空间配置中的 <context:annotation-config>元素,如下所示: <?xml version=&qu