spring提供了多个注解声明Bean为spring管理的Bean

@Controller  声明此类是一个MVC类,通常与@RequestMapping一起使用

@Controller
@RequestMapping("user")
public class UserController { @RequestMapping("get/{id}")
public String getUser(@PathVariable String id){
return "";
}
}

如果访问/user/get/1,将调用getUser方法,并把参数1传给id。

@Service  声明此类是一个业务处理类,通常与@Transactional一起使用

@Service
@Transactional
public class UserServiceImpl implements UserService {
public void order(...){
...
}
}

@Repository  声明此类是一个dao类,访问数据库

@Repository
public class UserDao implements CrudDao<User,String> {
...
}
}

@RestController  等于@Controller+@ResponseBody,用于REST服务,可返回json格式字符串

@Component  声明此类是一个Spring管理的类,通常用于无法用上述注解描述的spring管理类

@Configuration  声明此类是一个配置类,通常与@Bean 配合使用

@Configuration
public class DataSourceConfig { @Bean(name="dataSource")
public DataSource dataSource(Environment env){
HikariDataSource ds=new HikariDataSource();
ds.setDriverClassName(env.getProperty("spring.dataSource.driver-class-name"));
ds.setJdbcUrl(env.getProperty("spring.dataSource.url"));
ds.setUsername(env.getProperty("spring.dataSource.username"));
ds.setPassword(env.getProperty("spring.dataSource.password"));
return ds;
}
}

上例DataSourceConfig 是一个spring容器配置类,配置了HikariDataSource。

@Bean  作用在方法上,声明该方法执行的结果返回结果是一个spring容器管理的Bean,参考上例

spring负责实例化Bean,可以提供一系列回调函数,进一步配置Bean

@PostConstruct  当bean被容器初始化后会调用@PostConstruct注解的方法

@Component
public class ExampleBena { @PostConstruct
public void init(){...}
}

@PreDestory  在容器被销毁之前调用@PreDestory注解的方法

@Service
public class ExampleBena { @PreDestory
public void clear(){...}
}

spring有两种方式来引用容器管理的Bean,一种是根据名字,为每个管理的bean指定一个名字,随后可以通过名字引用此Bean

@Service
@Qualifier("exampleBean")
  public class ExampleBean { }

在其他Bean中使用注解@Qualifier来引用

@Service
public class AnotherExampleBean {   @Qualifier("exampleBean")
ExampleBean bean;
}

另一种是根据类型,使用注解@Autowired

@Service
public class ExampleBean { } @Service
public class AnotherExampleBean {
  @Autowired
ExampleBean bean;
}

在一个spring管理的Bean中,可以通过@Autowired声明对其他Bean的引用,作用于属性或者构造函参数,甚至是方法调用参数上。

上面两个注解是spring提供的,还有一个@Resource注解具体参考 Spring注解@Resource和@Autowired的区别

spring常用管理bean注解的更多相关文章

  1. Spring中管理Bean以及解析XML

    Spring是分层的轻量级框架 以IoC(Inverse of Control 反转控制)和AOP(Aspect Oriented Programming 面向切面编程)为核心 应用Spring的好处 ...

  2. spring IOC装配Bean(注解方式)

    1 Spring的注解装配Bean (1) Spring2.5 引入使用注解去定义Bean @Component 描述Spring框架中Bean (2) Spring的框架中提供了与@Componen ...

  3. Spring中的@Bean注解

    @Bean 基础概念 @Bean:Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理.产生这个Bean对象的方法Spring只会调用一次,随后这个 ...

  4. Spring @Configuration 和 @Bean 注解

    @Configuration 和 @Bean 注解 带有 @Configuration 的注解类表示这个类可以使用 Spring IoC 容器作为 bean 定义的来源.@Bean 注解告诉 Spri ...

  5. spring boot通过@Bean注解定义一个Controller

    功能需求 提供一个公共的jar包给其他业务模块依赖,需要在这个公共的jar中暴露一个restful API 采用spring auto config机制,在公共jar包中定义spring.factor ...

  6. spring常用的一些注解以及注解注入总结

    常用的spring注解有如下几种: @Controller@Service@Autowired@RequestMapping@RequestParam@ModelAttribute@Cacheable ...

  7. Spring事务管理的注解方式

    使用注解实现Spring的声明式事务管理,更加简单! 步骤: 1) 必须引入Aop相关的jar文件 2) bean.xml中指定注解方式实现声明式事务管理以及应用的事务管理器类 3)在需要添加事务控制 ...

  8. Spring中的@Bean注解、@Configuration注解、@Value

    1.首先是注册bean类:@Component.@Responsitory.@Controller.@Service.Configuration这些注解是把要实例化的对象装化成一个bean,放到Ioc ...

  9. 详解SSH注解配置,bean注解、事物注解等

    使用过SSH注解的屌丝们都知道,要想使用注解需要在applicationContext.xml配置文件里面开启注解配置,开启方式如下:1.头部声明需加入xmlns:context="http ...

随机推荐

  1. 2018java开发一些面经

    算法系列:https://www.cnblogs.com/yanmk/p/9232908.html 2018Java开发面经(持续更新) 不要给自己挖坑!!!不要给自己挖坑!!!不要给自己挖坑!!!如 ...

  2. ServiceStack.Ormlit 使用Insert的时候自增列不会被赋值

    Insert签名是这样的,将第2个参数设置为true就会返回刚插入的自增列ID了,然后可以手工赋值到对象上面去 public static long Insert<T>(this IDbC ...

  3. 编译安装hadoop2.6.3

    一.安装环境 1.1  JAVA  安装java1.7 下载jdk1.7: [root@node1~]# wget http://download.oracle.com/otn-pub/java/jd ...

  4. 自测之Lesson12:信号量

    题目:创建一个包含5个信号量的信号集. 完成代码: #include <stdio.h> #include <sys/ipc.h> #include <sys/sem.h ...

  5. 软工实践-Alpha 冲刺 (1/10)

    队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 学习了UI设计软件的使用,了解了项目开发的具体流程. 展示 ...

  6. lintcode-17-子集

    子集 给定一个含不同整数的集合,返回其所有的子集 注意事项 子集中的元素排列必须是非降序的,解集必须不包含重复的子集 样例 如果 S = [1,2,3],有如下的解: [ [3], [1], [2], ...

  7. HTML页面垂直滚动条不见

    <body style="overflow-y:scroll;"> </body>

  8. centos 安装mod_wsgi

    如果自定义升级过了python到2.7 #./configure --with-apxs=/usr/sbin/apxs --with-python=/usr/local/python27/bin/py ...

  9. 【python】Python 之 __new__() 方法与实例化

    本文转自:http://www.cnblogs.com/ifantastic/p/3175735.html __new__() 是在新式类中新出现的方法,它作用在构造方法建造实例之前,可以这么理解,在 ...

  10. Bootstrap 导航条理解

    以下理论内容copy自Bootstrap中文网 (一个不错的bootstrap学习网站) 导航条 默认样式的导航条 导航条是在您的应用或网站中作为导航页头的响应式基础组件.它们在移动设备上可以折叠(并 ...