java 、spring配置问题,下面的配置是啥意思啊?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 、spring配置问题,下面的配置是啥意思啊?相关的知识,希望对你有一定的参考价值。
<bean id="cachingService" class="org.cmdbuild.services.cache.DefaultCachingService">
<constructor-arg>
<list>
<bean class="org.cmdbuild.services.cache.wrappers.DatabaseDriverWrapper">
<constructor-arg ref="dbDriver" />
</bean>
<bean class="org.cmdbuild.services.cache.wrappers.DmsServiceWrapper">
<constructor-arg ref="dmsService" />
</bean>
<ref bean="cachedLookupStore" />
<bean
class="org.cmdbuild.services.cache.wrappers.TranslationServiceWrapper" />
<bean
class="org.cmdbuild.services.cache.wrappers.JSONDispatcherServiceWrapper" />
<bean
class="org.cmdbuild.services.cache.wrappers.DBTemplateServiceWrapper" />
<ref bean="soapUserFetcher" />
</list>
</constructor-arg>
</bean>
2、该bean通过构造器注入以下bean
<bean class="org.cmdbuild.services.cache.wrappers.DatabaseDriverWrapper">
<bean class="org.cmdbuild.services.cache.wrappers.DmsServiceWrapper">
<bean class="org.cmdbuild.services.cache.wrappers.TranslationServiceWrapper" />
<bean class="org.cmdbuild.services.cache.wrappers.JSONDispatcherServiceWrapper" />
<bean class="org.cmdbuild.services.cache.wrappers.DBTemplateServiceWrapper" />
3、当项目启动时,加载list中的bean,再注入给org.cmdbuild.services.cache.DefaultCachingService 中的相关属性
希望能够帮助你。本回答被提问者和网友采纳 参考技术C org.cmdbuild.services.cache.DefaultCachingService这个类中务必有一个带有一个List参数(类似Wrapper泛型 为下面所有bean对象和引用bean对象共同的接口 当然也可以没有泛型化 默认object)的成员变量 以及 构造方法, 就是spring在启动时 自动生成这6个bean为一个list并通过构造方法注入到DefaultCachingService的相应list类型的成员变量中。。。
Spring Boot项目属性配置
接着上面的入门教程,我们来学习下Spring Boot的项目属性配置。
1、配置项目内置属性
属性配置主要是在application.properties文件里配置的(编写时有自动提示)这里我们将server的端口变为8888,路径加上HelloWorld:
在DeomApplication.java的页面时点击运行按钮,打开浏览器输入:http://localhost:8888/HelloWorld/hello
此时,控制台的输出信息也可以看到端口变成8888了:
之前的url已无效:
更改后的URL有效:
2、配置自定义属性
同样也是在application.properties文件编写,内容如下:
接着在HelloWorldController.java中使用@Value注解将自定义属性注入,这样可以直接使用自定义属性了:
运行项目,输入:http://localhost:8888/HelloWorld/hello,浏览器将显示如下结果:
3、ConfigurationProperties 配置
新建一个com.example.properties包,再新建一个MysqlProperties.java类,经测试运行会出错,无法找到该Bean,错误如下:
百度后找到了原因:
SpringBoot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描!
io.github.gefangshuai.app
,则只会扫描io.github.gefangshuai.app
包及其所有子包,如果service或dao所在包不在io.github.gefangshuai.app
及其子包下,则不会被扫描!于是将MysqlProperties.java类移动了com.example.demo包下,也就是Application类所在的包,就没报bean找不到的错误了。
MysqlProperties.java用到了2个重要的注解:
1、@Component:把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>
2、@ConfigurationProperties(prefix = "mysql"):将配置类注入到spring容器中,这样可以使用配置类,这里使用了前缀。
编写完成,IDEA会提示改属性有问题,原因是spring-boot-configuration-processor.jar包没有引入,在pom.xml加入如下依赖:
1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-configuration-processor</artifactId> 4 <optional>true</optional> 5 </dependency>
MysqlProperties.java代码如下(使用Alt+Insert快捷键生成Getter和Setter方法):
1 package com.example.demo; 2 3 import org.springframework.boot.context.properties.ConfigurationProperties; 4 import org.springframework.stereotype.Component; 5 6 /** 7 * Mysql属性配置 8 */ 9 @Component 10 @ConfigurationProperties(prefix = "mysql") 11 public class MysqlProperties { 12 13 private String jdbcName; 14 15 private String dbUrl; 16 17 private String userName; 18 19 private String password; 20 21 public String getJdbcName() { 22 return jdbcName; 23 } 24 25 public void setJdbcName(String jdbcName) { 26 this.jdbcName = jdbcName; 27 } 28 29 public String getDbUrl() { 30 return dbUrl; 31 } 32 33 public void setDbUrl(String dbUrl) { 34 this.dbUrl = dbUrl; 35 } 36 37 public String getUserName() { 38 return userName; 39 } 40 41 public void setUserName(String userName) { 42 this.userName = userName; 43 } 44 45 public String getPassword() { 46 return password; 47 } 48 49 public void setPassword(String password) { 50 this.password = password; 51 } 52 }
application.properties添加的属性如下:
1 mysql.jdbcName=com.mysql.jdbc.Driver 2 mysql.dbUrl=jdbc:mysql://localhost:3306/db_boot 3 mysql.userName=root 4 mysql.password=root
HelloWordController.java的最终代码为:
1 package com.example.demo; 2 3 import org.springframework.beans.factory.annotation.Value; 4 import org.springframework.stereotype.Controller; 5 import org.springframework.web.bind.annotation.RequestMapping; 6 import org.springframework.web.bind.annotation.ResponseBody; 7 8 import javax.annotation.Resource; 9 10 11 /** 12 * Created on 2017-9-3. 13 */ 14 @Controller 15 public class HelloWorldController { 16 17 @Value("${hellWorld}") 18 private String helloWorld; 19 20 @Resource 21 private MysqlProperties mysqlPropertie; 22 23 @RequestMapping("/hello") 24 @ResponseBody 25 public String say(){ 26 return helloWorld; 27 } 28 29 @RequestMapping("/showJdbc") 30 @ResponseBody 31 public String showJdbc(){ 32 return "mysql.jdbcName" + mysqlPropertie.getJdbcName() +"<br/>" 33 + "mysql.dbUrl" + mysqlPropertie.getDbUrl() +"<br/>" 34 + "mysql.userName" + mysqlPropertie.getUserName() +"<br/>" 35 + "mysql.password" + mysqlPropertie.getPassword() +"<br/>"; 36 37 } 38 39 40 }
运行项目,浏览器输入:http://localhost:8888/showJdbc,正确结果如下:
以上是关于java 、spring配置问题,下面的配置是啥意思啊?的主要内容,如果未能解决你的问题,请参考以下文章
LDAP 的 Spring Security Java 配置
the hash for the file is not present in the specified catalog file,是啥意