首页 技术 正文
技术 2022年11月19日
0 收藏 766 点赞 3,639 浏览 3905 个字

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

一、Spring bean配置常用的注解

  常用的有四个注解

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

二、使用注解

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

包结构如下:

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

配置文件如下: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包下的类

 package me.spring.beans.annotation; import org.springframework.stereotype.Component; @Component
public class TestObject { }
package me.spring.beans.generic.di; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-generic-di.xml");
UserService userService = (UserService) ctx.getBean("userService");
userService.add();
}
}

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

 package me.spring.beans.annotation.controller; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import me.spring.beans.annotation.service.UserService; /**
* 模拟表现层
* @author Administrator
*
*/
@Controller
public class UserController { @Autowired
private UserService userService;
public void execute() {
System.out.println("UserController's execute method");
userService.add();
}
}

me.spring.beans.repository包下的类

 package me.spring.beans.annotation.repository; import org.springframework.stereotype.Repository; @Repository
public class UserJdbcRepository implements UserRepository { @Override
public void save() { System.out.println("UserJdbcRepository's save");
} } package me.spring.beans.annotation.repository; public interface UserRepository { public void save();
} package me.spring.beans.annotation.repository; import org.springframework.stereotype.Repository; /**
* 模拟持久化层
* @author Administrator
*
*/
@Repository
public class UserRepositoryImpl implements UserRepository{ @Override
public void save() { System.out.println("UserRepository's save method");
} }

me.spring.beans.service包下的类

 package me.spring.beans.annotation.service; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service; import me.spring.beans.annotation.repository.UserRepository; /**
* 模拟业务层
* @author Administrator
*
*/
@Service
public class UserService { @Autowired
@Qualifier("userJdbcRepository")
private UserRepository userRepository;
public void add() {
System.out.println("UserService's add method");
userRepository.save();
}
}

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

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,115
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,587
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,433
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,204
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,840
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,925