Spring框架入门之基于Java注解配置bean

Spring框架入门之基于Java注解配置bean

一、Spring bean配置常用的注解

  常用的有四个注解

  • Controller: 用于控制器的注解
  • Service : 用于service的注解
  • Component: 用于基本组件的注解
  • Repository:用于Dao层的注解
  • 其实,对于spring来说,它根本无法识别controller,service等,它只知道只要你加了以上四个注解,它就帮你创建bean
  • 简单来说,就是如果你在控制器上使用Component注解,或者使用Repository注解也是可以的,四种注解可以混用
  • 但是,我们一般都按照上方所示的规则来使用注解,这样代码才有可读性

二、使用注解

要说的都在代码注释中,直接上代码:

包结构如下:

配置文件如下:beans-annotation.xml

<?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.1.xsd">
        
    <!-- 
        指定SpringIOC容器扫描的包
        可以使用resource-pattern指定扫描的资源
     -->    
    <!--  
    <context:component-scan base-package="me.spring.beans.annotation" resource-pattern="repository/*.class"></context:component-scan>
    -->
    <!--  
    <context:component-scan 
        base-package="me.spring.beans.annotation" 
        resource-pattern="repository/*.class"
        use-default-filters="false">
    -->
        <!-- context:exclude-filter子节点指定要排除的组件 
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
        -->
        <!-- include-filter指定包含直接点的组件,需要use-default-filters配合使用 
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
        -->
        <!--  
        <context:exclude-filter type="assignable" expression="org.springframework.stereotype.Repository"/>
        <context:include-filter type="assignable" expression="org.springframework.stereotype.Repository"/>
        -->
    <!--  
    </context:component-scan>
    -->
    <context:component-scan base-package="me.spring.beans.annotation"></context:component-scan>
</beans>

me.spring.beans.annotation包下的类

 1 package me.spring.beans.annotation;
 2 
 3 import org.springframework.stereotype.Component;
 4 
 5 @Component
 6 public class TestObject {
 7 
 8 }
 9 package me.spring.beans.generic.di;
10 
11 import org.springframework.context.ApplicationContext;
12 import org.springframework.context.support.ClassPathXmlApplicationContext;
13 
14 public class Main {
15 
16     public static void main(String[] args) {
17         ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-generic-di.xml");
18         UserService userService = (UserService) ctx.getBean("userService");
19         userService.add();
20     }
21 }

me.spring.beans.annotation.controller包下的类:

 1 package me.spring.beans.annotation.controller;
 2 
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import org.springframework.stereotype.Controller;
 5 
 6 import me.spring.beans.annotation.service.UserService;
 7 
 8 /**
 9  * 模拟表现层
10  * @author Administrator
11  *
12  */
13 @Controller
14 public class UserController {
15 
16     @Autowired
17     private UserService userService;
18     public void execute() {
19         System.out.println("UserController's execute method");
20         userService.add();
21     }
22 }

me.spring.beans.repository包下的类

 1 package me.spring.beans.annotation.repository;
 2 
 3 import org.springframework.stereotype.Repository;
 4 
 5 @Repository
 6 public class UserJdbcRepository implements UserRepository {
 7 
 8     @Override
 9     public void save() {
10 
11         System.out.println("UserJdbcRepository's save");
12     }
13 
14 }
15 
16 package me.spring.beans.annotation.repository;
17 
18 public interface UserRepository {
19 
20     public void save();
21 }
22 
23 package me.spring.beans.annotation.repository;
24 
25 import org.springframework.stereotype.Repository;
26 
27 /**
28  * 模拟持久化层
29  * @author Administrator
30  *
31  */
32 @Repository
33 public class UserRepositoryImpl implements UserRepository{
34 
35     @Override
36     public void save() {
37 
38         System.out.println("UserRepository's save method");
39     }
40 
41 }

me.spring.beans.service包下的类

 1 package me.spring.beans.annotation.service;
 2 
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import org.springframework.beans.factory.annotation.Qualifier;
 5 import org.springframework.stereotype.Service;
 6 
 7 import me.spring.beans.annotation.repository.UserRepository;
 8 
 9 /**
10  * 模拟业务层
11  * @author Administrator
12  *
13  */
14 @Service
15 public class UserService {
16 
17     @Autowired
18     @Qualifier("userJdbcRepository")
19     private UserRepository userRepository;
20     public void add() {
21         System.out.println("UserService's add method");
22         userRepository.save();
23     }
24 }

 参考:http://blog.csdn.net/u010837612/article/details/45577817

posted on 2018-01-14 21:32  Ryan520  阅读(462)  评论(0编辑  收藏  举报

导航