ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

17-spring 其他元数据注解

2021-05-01 14:04:47  阅读:202  来源: 互联网

标签:Scope 17 spring Value 注解 import com metaData


使用注解方式实现Spring IoC

回到spring导航页

17-spring 其他元数据注解

常用的元数据注解如下:

注解说明
@Primary按类型装配时出现多个相同类型对象,拥有此注解对象优先被注入
@PostConstruct描述方法,相当于XML中init-method配置的注解版本
@PreDestroy描述方法,相当于XML中的destroy-method配置的注解版本
@Scope设置对象的Scope属性
@Value为属性注入静态数据

@Scope与@PostConstruct示例用法

package com.torey.spring.ioc.service;

/**
 * @Author http://torey611.gitee.io/li-tao-feng/
 * @Email torey6061@qq.com
 * @Date 2021/4/30 20:22
 * @描述:
 */

import com.torey.spring.ioc.dao.IUserDao;
import com.torey.spring.ioc.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;

@Service
@Scope("prototype")//@Scope用于设置这个对象是单例||多例,与XML中bean scope完全相同
public class UserService {
    public UserService() {
        System.out.println(this.getClass().getName() + "正在被创建,无参构造函数");
    }
    @PostConstruct //与XML中bean init-method完全相同
    public void init(){
        System.out.println(this.getClass().getName() + ".init();初始化UserServer对象");
    }


    @Autowired
    private IUserDao userDao;
    public void getById(Long id){
        System.out.println(this.getClass().getName() + ".getById()");
        userDao.getById(id);
    }
}

@Value用法示例代码

在resources目录下新建config.properties文件,内容如下:

metaData=com.torey
mysql.username=root
mysql.password=root123

在applicationContext.xml文件新增一句

<!--通知spring ioc容器初始化时加载属性文件-->
    <context:property-placeholder location="classpath:config.properties"/>

applicationContext.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
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">
    <!--通知spring ioc容器初始化时加载属性文件-->
    <context:property-placeholder location="classpath:config.properties"/>
    <!--在IoC容器初始化时自动扫描四种组件类型注解并完成实例化
    @Repository  @Service   @Controller  @Component
    -->
    <context:component-scan base-package="com.torey.spring.ioc.*"></context:component-scan>
</beans>

在java代码中使用@Value获取config.properties中配置信息

@Value("${metaData}")//读取config.yml的metaData属性值
    private String metaData;
    @Value("${mysql.username}")
    private String sqlUserName;
    @Value("${mysql.password}")
    private String sqlPassWord;

java示例代码如下:

package com.torey.spring.ioc.service;

/**
 * @Author http://torey611.gitee.io/li-tao-feng/
 * @Email torey6061@qq.com
 * @Date 2021/4/30 20:22
 * @描述:
 */

import com.torey.spring.ioc.dao.IUserDao;
import com.torey.spring.ioc.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;

@Service
@Scope("prototype")//@Scope用于设置这个对象是单例||多例,与XML中bean scope完全相同
public class UserService {
    @Value("${metaData}")//读取config.yml的metaData属性值
    private String metaData;
    @Value("${mysql.username}")
    private String sqlUserName;
    @Value("${mysql.password}")
    private String sqlPassWord;
    public UserService() {
        System.out.println(this.getClass().getName() + "正在被创建,无参构造函数");
        System.out.println("metaData=" + this.metaData);
    }
    @PostConstruct //与XML中bean init-method完全相同
    public void init(){
        System.out.println(this.getClass().getName() + ".init();初始化UserServer对象");
        System.out.println("测试@Value: metaData=" + this.metaData+";mysql.sqlUserName="+this.sqlUserName+";sqlPassWord="+this.sqlPassWord);
    }


    @Autowired
    private IUserDao userDao;
    public void getById(Long id){
        System.out.println(this.getClass().getName() + ".getById()");
        userDao.getById(id);
    }
}

导航,上一页,下一页

16Resource和Autowired注解的区别

18使用java config实现Spring Ioc

赞赏作者

赞赏作者

标签:Scope,17,spring,Value,注解,import,com,metaData
来源: https://blog.csdn.net/Torey_Li/article/details/116329795

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有