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>

参考技术A id cachService就是配置了一个名字为它的配置,后面的class是类的真实类路径。通过构造器注入参数,这个类被加载到的时候,会自动加载list里面的类,生成对象。你在构造器里面接收就可以使用这些类了 参考技术B 1、定义了一个 id="cachingService" class="org.cmdbuild.services.cache.DefaultCachingService" 的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类所在的包位置从上往下扫描!

如果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,正确结果如下:

 转载请附上原文链接:http://www.cnblogs.com/stm32stm32/p/7469663.html

以上是关于java 、spring配置问题,下面的配置是啥意思啊?的主要内容,如果未能解决你的问题,请参考以下文章

mybatis po对象是啥意

LDAP 的 Spring Security Java 配置

the hash for the file is not present in the specified catalog file,是啥意

wildfly 12 和 spring java 配置,不工作,403 错误

添加日志(配置spring)---Java_web

springboot与springmvc的区别是啥?