zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    CSS函数
    CSS布局方式
    实现文件下载的方式
    JS编码和解码方式
    Mac系统重置PostgreSQL密码
    使用CSS3 +JS实现图片预加载的动画效果
    GitBook学习入门教程
    Mac删除node.js 命令
    读取HTML文件并替换其中的特定内容,然后保存文件
    Java使用HttpURLConnection模拟浏览器发送HTTP请求
  • 原文地址:https://www.cnblogs.com/albertrui/p/8284459.html
Copyright © 2011-2022 走看看