zoukankan      html  css  js  c++  java
  • Spring 中常用的注解

    (1).用于注册bean对象的注解

    1.1@Component:

    作用: 调用无参构造创建一个bean对象,并把对象存入spring的Ioc容器,交由spring容器进行管理。相当于在xml中配置一个bean。

    属性: value:指定bean的id。如果不指定value属性,默认bean的id是当前类的类名。首字母小写。

    1.2@Controller

    作用: 调用无参构造创建一个bean对象,并把对象存入spring的Ioc容器,交由spring容器进行管理。相当于在xml中配置一个bean。一般用于表现层的注解

    属性: value:指定bean的id。如果不指定value属性,默认bean的id是当前类的类名。首字母小写。

    1.3@Service

    作用: 调用无参构造创建一个bean对象,并把对象存入spring的Ioc容器,交由spring容器进行管理。相当于在xml中配置一个bean。一般用于业务层的注解

    属性: value:指定bean的id。如果不指定value属性,默认bean的id是当前类的类名。首字母小写。

    1.4@Repository

    作用: 调用无参构造创建一个bean对象,并把对象存入spring的Ioc容器,交由spring容器进行管理。相当于在xml中配置一个bean。一般用于持久层的注解

    属性: value:指定bean的id。如果不指定value属性,默认bean的id是当前类的类名。首字母小写。

    1.5@Bean

    作用:

    用于把当前方法的返回值作为bean对象存入spring的ioc容器中 属性:name:用于指定bean的id。当不写时,默认值是当前方法的名称。注意:当我们使用注解配置方法时,如果方法有参数,spring框架会去容器中查找有没有可用的bean对象,查找的方式和Autowired注解的作用是一样的。

    例: 获取Datasource对象 @Return @Bean(value = "dataSource") public DataSource getDataSource(){

    try{

    ComboPooledDataSource dataSource = new ComboPooledDataSource();

    dataSource.setDriverClass(this.driver);

    dataSource.setJdbcUrl(this.url);

    dataSource.setUser(this.username);

    dataSource.setPwd(this.pwd);

    return dataSource; }catch(Exception exception) {

    throw new RuntimeException(exception);

    }

    }

    (2).用于依赖注入的注解

    2.1@Autowired

    作用:

    @Autowired和@Resource**都是Spring支持的注解形式动态装配bean的方式。@Autowired默认按照类型(byType)装配,如果想要按照名称(byName)装配,需结合@Qualifier注解使用。

    属性:

    required:@Autowired注解默认情况下要求依赖对象必须存在。如果不存在,则在注入的时候会抛出异常。如果允许依赖对象为null,需设置required属性为false。

    例: @Autowired @Qualifier("userService")

    private UserService userService;

    2.2@Qualifier

    作用:

    在自动按照类型注入的基础之上,再按照 Bean 的 id 注入。它在给字段注入时不能独立使用,必须和@Autowire一起使用;但是给方法参数注入时,可以独立使用。 在自动按照类型注入的基础之上,再按照Bean的id注入.它在给字段注入时不能独立使用,必须和@Autoire一起使用;但是给方法参数注入时,可以独立使用。

    属性:

    value:用于指定要注入的bean的id,其中,该属性可以省略不写

    例:

    @Autowire

    @Qualifier(value="userService")

    //@Qualifier("userService") //value属性可以省略不写

    private UserService userService;

    2.3 @Resource

    作用:

    @Autowire和@Resource都是Spring支持的注解形式动态装配bean的方式。@Resource默认按照名称(byName)装配,名称可以通过name属性指 定。如果没有指定name,则注解在字段上时,默认取(name=字段名称)装配。如果注解在setter方法上时,默认取(name=属性名称)装配。

    属性:

    name:用于指定要注入的bean的id

    type:用于指定要注入的bean的type

    装配顺序

    1.如果同时指定name和type属性,则找到唯一匹配的bean装配,未找到则抛异常;

    2.如果指定name属性,则按照名称(byName)装配,未找到则抛异常;

    3.如果指定type属性,则按照类型(byType)装配,未找到或者找到多个则抛异常;

    4.既未指定name属性,又未指定type属性,则按照名称(byName)装配;如果未找到,则按照类型(byType)装配。

    例:

    @Resource(name="userService")

    //@Resource(type="userService")

    //@Resource(name="userService", type="UserService")

    private UserService userService;

    2.4 @Value

    作用:

    通过@Value可以将外部的值动态注入到Bean中,可以为基本类型数据和String类型数据的变量注入数据

    例:

    // 1.基本类型数据和String类型数据的变量注入数据

    @Value("tom")

    private String name;

    @Value("18")

    private Integer age;

    // 2.从properties配置文件中获取数据并设置到成员变量中

    // 2.1jdbcConfig.properties配置文件定义如下

    jdbc.driver = com.mysql.jdbc.Driver

    jdbc.url = jdbc:mysql://localhost:3306/eesy

    jdbc.username = root

    jdbc.password = root

    // 2.2获取数据如下

    @Value("${jdbc.driver}")

    private String driver;

    @Value("${jdbc.url}")

    private String url;

    @Value("${jdbc.username}")

    private String username;

    @Value("${jdbc.password}")

    private String password;

    (3)用于改变bean作用范围的注解

    3.1@Scope

    作用:

    指定bean的作用范围

    属性:

    value:

    1)singleton:单例

    2)prototype:多例

    3)request:

    4)session:

    5)globalsession:

    例:@Autowire

    @Scope(value="prototype")

    private UserService userService;

    (4)生命周期相关的注解

    @PostConstruct

    作用:

    指定初始化方法

    例:

    @PostConstruct

    public void init() {

    System.out.println("初始化方法执行");

    }

    4.2 @PreDestroy

    作用:

    指定销毁方法

    例:

    @PreDestroy

    public void destroy() {

    System.out.println("销毁方法执行");

    }

    -----dao
    @Repository --写在dao层
    -----service
    @Service --写在service层
    -----controller
    @Controller --写在controller层
    @Scope --写在多人访问controller上 单例
    @scope("prototype") 多例
    -----属性注入
    @Autowired --写在需要注入的属性上
    @Resource(name="loginService")与Autowired类似,但是需要通过指定名字去寻找找对应名字的注入对象
    @Inject 与Autowired和Resource
    -----资源处理
    @RequestMapping对应访问的资源,可以只写在controller方法上
    也可以写在controller上,controller上的也可以省略

    作者:旧歌
    链接:https://www.cnblogs.com/wdyjt/p/14101952.html
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利

  • 相关阅读:
    LeetCode——4Sum
    LeetCode——3Sum
    LeetCode——Longest Repeating Character Replacement
    LeetCode——Longest Palindromic Subsequence
    LeetCode——Longest Word in Dictionary through Deleting
    剑指Offer——丑数
    剑指Offer——最长不包含重复字符的子字符串
    剑指Offer——把数组排成最小的数
    LAMP第四部分mysql操作
    LAMP第三部分php,mysql配置
  • 原文地址:https://www.cnblogs.com/wdyjt/p/14101952.html
Copyright © 2011-2022 走看看