Spring框架bean的配置(3):基于注解的配置

本文内容纲要:Spring框架bean的配置(3):基于注解的配置

1.基于注解的配置:

@Component: 基本注解, 标识了一个受 Spring 管理的组件

@Respository: 标识持久层组件

@Service: 标识服务层(业务层)组件

@Controller: 标识表现层组件

将这些架包放入在工程目录下建立的lib文件夹里,并解压

commons-logging-1.1.1

spring-aop-4.0.0.RELEASE

spring-beans-4.0.0.RELEASE

spring-context-4.0.0.RELEASE

spring-core-4.0.0.RELEASE

spring-expression-4.0.0.RELEASE

---------------------------------------------------------------------------

建立接口:UserRepository

package com.atguigu.spring.beans.annotation.test;

public interface UserRepository {

void save();

}

建立类:UserRepositoryImpl继承于接口:UserRepository

package com.atguigu.spring.beans.annotation.test;

import org.springframework.stereotype.Repository;

@Repository("userRepository") //标识持久层组件

public class UserRepositoryImpl implements UserRepository {

public void save() {

System.out.println("panpan123");

}

}

建立类:UserService

package com.atguigu.spring.beans.annotation.test;

import org.springframework.stereotype.Service;

@Service //标识服务层(业务层)组件

public class UserService {

public void add(){

System.out.println("panpan456");

}

}

建立类:UserController

package com.atguigu.spring.beans.annotation.test;

import org.springframework.stereotype.Controller;

@Controller //标识表现层组件

public class UserController {

public void test(){

System.out.println("panpan789");

}

}

上述类都是建立在包com.atguigu.spring.beans.annotation.test之下;

spring的xml配置文件:beansannotation.xml,在com.atguigu.spring.beans.annotation.test包或子包 下带有上述四个注解的,可以被IOC容器识别

<context:component-scan  base-package="com.atguigu.spring.beans.annotation.test" >    

</context:component-scan>

加入resource-pattern="repository/*.class,是指识别repository注解的类;

<context:component-scan   base-package="com.atguigu.spring.beans.annotation.test"  resource-pattern="repository/*.class">    

</context:component-scan>

注解过滤:指不包含 类型是 注解,导入的包(import后面的)是org.springframework.stereotype.Repository的类;

<context:component-scan

base-package="com.atguigu.spring.beans.annotation"

<context:exclude-filter type="annotation"

expression="org.springframework.stereotype.Repository"/>

</context:component-scan>

取消默认的use-default-filters="false",包含...

<context:component-scan

base-package="com.atguigu.spring.beans.annotation" use-default-filters="false">

<context:include-filter type="annotation"

expression="org.springframework.stereotype.Repository"/>

</context:component-scan>

类过滤:type="assignable",不包含全类名是com.atguigu.spring.beans.annotation.test.UserRepository

<context:component-scan 

base-package="com.atguigu.spring.beans.annotation"

<context:exclude-filter type="assignable" expression="com.atguigu.spring.beans.annotation.test.UserRepository"/>

</context:component-scan>

类过滤:type="assignable",取消默认的use-default-filters="false",只包含全类名为com.atguigu.spring.beans.annotation.test.UserRepositoryImpl类

<context:component-scan 

base-package="com.atguigu.spring.beans.annotation" use-default-filters="false">

<context:exclude-filter type="assignable" expression="com.atguigu.spring.beans.annotation.test.UserRepositoryImpl"/>

</context:component-scan>

建立Main类,进行测试:

package com.atguigu.spring.beans.annotation.test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {

public static void main(String[] args) {

ApplicationContext ctx=new ClassPathXmlApplicationContext("beansannotation.xml");

TestObject test=(TestObject) ctx.getBean("testObject");

System.out.println(test);

UserController controller=(UserController) ctx.getBean("userController");

System.out.println(controller);

UserService service=(UserService) ctx.getBean("userService");

System.out.println(service);

UserRepositoryImpl repository=(UserRepositoryImpl) ctx.getBean("userRepository");

System.out.println(repository);

}

}

本文内容总结:Spring框架bean的配置(3):基于注解的配置

原文链接:https://www.cnblogs.com/lxnlxn/p/5866479.html

以上是 Spring框架bean的配置(3):基于注解的配置 的全部内容, 来源链接: utcz.com/z/296213.html

回到顶部