zoukankan      html  css  js  c++  java
  • spring常用管理bean注解

    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的区别

     

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 黑色星期五
    Java实现 蓝桥杯VIP 算法训练 比赛安排
    Java实现 蓝桥杯VIP 算法训练 比赛安排
    Java实现 蓝桥杯VIP 算法训练 斜率计算
    Java实现 蓝桥杯VIP 算法训练 斜率计算
    Java实现 蓝桥杯VIP 算法训练 整数平均值
    Java实现 蓝桥杯VIP 算法训练 整数平均值
    控件动态产生器(使用RegisterClasses提前进行注册)
    Delphi编写自定义控件以及接口的使用(做了一个TpgDbEdit)
    Log4delphi使用心得
  • 原文地址:https://www.cnblogs.com/cralor/p/9176882.html
Copyright © 2011-2022 走看看