spring(读取外部数据库配置信息、基于注解管理bean、DI)

###解析外部配置文件
在resources文件夹下,新建db.properties(和数据库连接相关的信息)

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db
username=root
password=root

开发步骤
1)创建maven工程
添加web.xml
添加tomcat运行环境
添加jar spring-webmvc,junit,commons-dbcp,mysql
添加application.xml
2)配置数据库的连接池信息

 <!--
1.util:properties表示读取外部的属性文件,并实例化对象
2.id表示名称
3.location表示属性文件的位置

<util:properties id="dbConf" location="classpath:db.properties">

       <!--配置数据库的连接池    1.使用spring表达式给属性赋值   2.spring表达式语法格式:#{ }--->

<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">

<bean id="dataSource"
 class="org.apache.commons.dbcp.BasicDataSource">
     <property name="driverClassName"
      value="#{dbConf.driverClassName}"/>
     <property name="url"
      value="#{dbConf.url}"/>
     <property name="username"
      value="#{dbConf.username}"/>
     <property name="password"
      value="#{dbConf.password}"/>
 </bean>

##基于注解的bean管理
##1.基于注解的方式实例化对象(推荐使用)
    实例化对象和依赖注入有两种方式:配置文件,注解

1.扫描包  (配置文件)
<!--扫描包可以扫描当前包和子包下的所有类-->
     <context:component-scan  base-package="cn.tedu.dao">

2.特定功能(实例化功能)的注解
      @Component通用注解:实例化对象
      @Controller:实例化控制层类的对象
      @Service:实例化业务层类的对象
      @Reponsitory:实例化持久层类的对象

 @Repository("userDao")
      public class UserDaoImpl implements UserDao{
           public void insertUser(){
                 System.out.println("添加成功!");
        }

//在mybatis里,一般是定义一个接口,接口里面定义抽象方法,并在配置文件里面实现相应的抽象方法。

##2.生命周期管理

//@Component表示实例化对象
@Component
public class BeanLife {
public BeanLife(){
System.out.println("BeanLife");
}
//@PostConstruct表示定义初始化方法
//@PostConstruct:Tomcat运行环境依赖的jar包
@PostConstruct
public void init(){
System.out.println("init");
}
public void execute(){
System.out.println("execute");
}
//@PreDestroy表示定义销毁的方法
//@PreDestroy:Tomcat运行环境依赖的jar包
@PreDestroy
public void destroy(){
System.out.println("destroy");
}

}

##3.bean作用域

//通过注解实例化对象,默认为单例singleton
//@Scope定义bean的作用域
//@Scope("prototype")表示bean作用域为多例
@Component
@Scope("prototype")
public class DemoScope {

}

##4.延迟加载

//默认bean对象的实例化,是立即加载
//@Lazy设置bean是否延迟加载的注解
//@Lazy(true)设置bean对象为延迟加载

@Component
@Lazy(true)
public class DemoLazy {
public DemoLazy(){
System.out.println("DemoLazy");
}

}

#DI(动态地向某个对象提供它所要的对象)

参考:http://www.360doc.com/content/18/0125/09/27831725_724899826.shtml
##[email protected](推荐使用)

//[email protected]  tomcat运行环境依赖jar包中定义的注解
//[email protected] 实现依赖注入
//[email protected] 实现依赖注入,可以省略set方法
//[email protected]默认依赖注入的方式为byName
//[email protected]如果没有匹配的属性
//               按照byType方式实现依赖注入
//[email protected](name="userDaoImpl")

  @Resource(name="userDaoImpl")
     private UserDao userDao;

##[email protected](了解)

public class UserServiceImpl2 implements UserService2{
//[email protected] 依赖注入
//[email protected] 默认依赖注入的方式byType;
// 如果有多个相同类型的对象,那么按照byName依赖注入
//3.如果使用byName实现依赖注入,
//  使用@Qualifier注解定义匹配的名称
//[email protected]不能单独使用

@Autowired
@Qualifier("userDaoImpl")
private UserDao userDao;

public void addUser() {
userDao.insertUser();

}

}

##[email protected](了解)

@Component
public class Student {
//@Value("Admin")给String或者基本数据类型依赖注入
//@Value("#{conf.name}")使用spring表达式实现依赖注入
@Value("#{conf.name}")
private String name;

public String toString(){
return "name="+name;
}

}

原文地址:https://www.cnblogs.com/shijinglu2018/p/9576426.html

时间: 2024-10-13 15:03:36

spring(读取外部数据库配置信息、基于注解管理bean、DI)的相关文章

Spring配置文件外部化配置及.properties的通用方法

摘要:本文深入探讨了配置化文件(即.properties)的普遍应用方式.包括了Spring.一般的.远程的三种使用方案. 关键词:.properties, Spring, Disconf, Java 解决问题:如何正确使用.properties配置文件. 若是有其他代码需要此Spring属性配置,将Spring配置中的属性值设置迁移到外部的属性文件中,是必需的操作,这也可以使Spring配置文件更易读.在这里我们不仅要讨论Spring的外部化配置,还要深入探讨配置化文件(即.propertie

Spring+MyBatis双数据库配置

Spring+MyBatis双数据库配置 近期项目中遇到要调用其它数据库的情况.本来仅仅使用一个MySQL数据库.但随着项目内容越来越多,逻辑越来越复杂. 原来一个数据库已经不够用了,须要分库分表.所以决定扩充数据库,正好Spring能够灵活的扩充数据库.以下简单写一篇博文,记录下多数据库配置的过程. 1.项目结构例如以下图: 当中mkhl和ulab分别相应两个数据库模块.同一时候也相应两个不同的功能模块. 2.整个Maven项目的配置文件:pom.xml <project xmlns="

Spring Boot 外部化配置(二) - @ConfigurationProperties 、@EnableConfigurationProperties

目录 3.外部化配置的核心 3.2 @ConfigurationProperties 3.2.1 注册 Properties 配置类 3.2.2 绑定配置属性 3.1.3 ConfigurationPropertiesAutoConfiguration 4.总结 3.外部化配置的核心 ????????接着上一章,<Spring Boot 外部化配置(一)> 3.2 @ConfigurationProperties 众所周知,当 Spring Boot 集成外部组件后,就可在 propertie

基于注解的bean配置

基于注解的bean配置,主要是进行applicationContext.xml配置.DAO层类注解.Service层类注解. 1.在applicationContext.xml文件中配置信息如下 <!--定义服务层代码存放的包扫描路径--> <context:component-scan base-package="org.mainstudio.com.service,org.mainstudio.com.dao" /> 其中base-package包括了要进行

openfire3.9.3服务器的外部数据库配置mysql

之前自己玩过openfire的源码编译,部署,用的内置数据库,只是好奇而已.现如今对openfire有一点理解了,尝试用mysql来重新配置最新openfire服务器,使得可视化,可拓展性更好些. 准备工作: 准备事项 1.安装mysql (5.5.8,任一版本都可)  附带一个可视化工具(navicat); 2.下载最新openfire服务器(3.9.3);  http://www.igniterealtime.org/ 要稍微读懂点英文呵: 3.导入openfire解压目录中的mysql脚本

[Xcode10 实际操作]九、实用进阶-(8)实现App的Setting设置:添加和读取程序的配置信息

本文将演示如何实现添加和读取程序的配置信息. 在项目文件夹[DemoApp]上点击鼠标右键->[New File]创建一个设置束文件 ->[Settings Bundle]设置束: 如果想要通过设备的[设置]程序,来展示自定义的的偏好设置,必须先准备好一个设置束 ->[Next]->[Save As]:Setting.bundle保持默认的配置. ->保存默认的存储位置点击[Create] 在项目导航区多了一个设置束文件[Setting.bundle]. 点击下拉箭头,查看设

泛微e-cology OA系统某接口存在数据库配置信息泄露漏洞复现

1.简介(开场废话) 攻击者可通过存在漏洞的页面直接获取到数据库配置信息.如果攻击者可直接访问数据库,则可直接获取用户数据,甚至可以直接控制数据库服务器. 2.影响范围 漏洞涉及范围包括不限于8.0.9.0版 3.搭建个环境(其实环境不重要,信息泄露这个东西) 4.已知漏洞点出现在/mobile/dbconfigreader.jsp这个页面(开始胡乱分析...有错还希望师傅们指出来) 直接看源代码好了,搜了一圈没找到8.0的安装包,我太难了,借张图过来,嘿嘿嘿 来源:https://mp.wei

Spring读取外部的资源配置文件—@PropertySource和@Value实现资源文件配置

通过@PropertySource可以指定读取的配置文件,通过@Value注解获取值: @PropertySource注解主要是让Spring的Environment接口读取属性配置文件用的,标识在@Configuration配置类上:@Value注解可以用在字段和方法上,通常用于从属性配置文件中读取属性值,也可以设置默认值. 具体用法: @PropertySource(value = { "classpath:config.properties" }, ignoreResourceN

Spring的AspectJ的AOP,基于注解(9.1)重点掌握

什么是AspectJ AspectJ是一个面向切面的框架,它扩展了Java语言.AspectJ定义了AOP语法所以它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件.AspectJ是一个基于Java语言的AOP框架Spring2.0以后新增了对AspectJ切点表达式支持@AspectJ 是AspectJ1.5新增功能,通过JDK5注解技术,允许直接在Bean类中定义切面新版本Spring框架,建议使用AspectJ方式来开发AOP AspectJ表达式: 语法:executi