我正在使用Spring和Mybatis并且我有两个数据库,第一个数据库的配置相对容易,但我无法使用Spring和事务处理第二个数据库,这是我的代码
@Configuration
@ComponentScan(basePackages = {"hernandez.service", "hernandez.dao"})
@EnableTransactionManagement
@MapperScan(basePackages="hernandez.mapper" )
@Import(DbConfig2.class)
public class AppConfig {
@Bean(name = "dataSource")
public DataSource dataSource() {
DriverManagerDataSource ds = new DriverManagerDataSource("com.mysql.jdbc.Driver",
"jdbc:mysql://localhost:3306/northwind", "root", "");
return ds;
}
@Bean
public SqlSessionFactoryBean sqlSessionFactory() {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource());
return factoryBean;
}
@Bean(name = "transactionManager")
public PlatformTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource());
}
}
@Configuration
@MapperScan("loli.mapper" )
public class DbConfig2 {
@Bean(name = "dataSource_2")
public DataSource dataSource2() {
DriverManagerDataSource ds = new DriverManagerDataSource("com.mysql.jdbc.Driver",
"jdbc:mysql://localhost:3306/dmsolut_dmsms", "root", ""); …Run Code Online (Sandbox Code Playgroud) 我知道出于并发原因,我无法在Java 8中更新lambda中局部变量的值.所以这是非法的:
double d = 0;
orders.forEach( (o) -> {
d+= o.getTotal();
});
Run Code Online (Sandbox Code Playgroud)
但是,如何更新实例变量或更改本地对象的状态?例如,Swing应用程序我有一个按钮和一个声明为实例变量的标签,当我点击按钮时我想要隐藏标签
jButton1.addActionListener(( e) -> {
jLabel.setVisible(false);
});
Run Code Online (Sandbox Code Playgroud)
我没有编译器错误并且工作正常,但是...改变lambda中对象的状态是正确的吗?我将来会遇到并发问题还是坏事?
这是另一个例子.想象一下,下面的代码是在一个servlet的方法doGet中我会在这里遇到一些问题吗?如果答案是肯定的:为什么?
String key = request.getParameter("key");
Map<String, String> resultMap = new HashMap<>();
Map<String, String> map = new HashMap<>();
//Load map
map.forEach((k, v) -> {
if (k.equals(key)) {
resultMap.put(k, v);
}
});
response.getWriter().print(resultMap);
Run Code Online (Sandbox Code Playgroud)
我想知道的是:什么时候改变lambda中对象实例的状态是正确的?
我在Tomcat中有一个Web应用程序,我在那里做很多String操作(substring,indexof,trimming等).我用jmap做了一个堆转储,然后用VisualVM加载它,我意识到我的堆内存使用量的近50%是用char [],为什么char []正在占用内存?我应该关注吗?它与字符串池有关吗?
我喜欢在Java中使用JSON序列化标准的想法,javax.json是向前迈出的一大步,你可以像这样做一个对象图:
JsonObject jsonObject3 =
Json.createObjectBuilder()
.add("name", "Ersin")
.add("surname", "Çetinkaya")
.add("age", 25)
.add("address",
Json.createObjectBuilder()
.add("city", "Bursa")
.add("country", "Türkiye")
.add("zipCode", "33444"))
.add("phones",
Json.createArrayBuilder()
.add("234234242")
.add("345345354"))
.build();
Run Code Online (Sandbox Code Playgroud)
就是这样,但是如何将pojo或简单的Java对象(如Map)直接序列化为JSON?就像我在Gson中所做的那样:
Person person = new Person();
String jsonStr = new Gson().toJson(person);
Run Code Online (Sandbox Code Playgroud)
如何使用新标准API执行此操作?
Java EE 7已经淘汰,我喜欢的功能之一是标准Websockets.目前我在Tomcat 7工作,有没有办法在我的Tomcat 7中集成Java EE 7 Websockets?我在Tyrus Websocket的文档中搜索它没有成功
更新:Tomcat 7.0.47附带Websocket支持,是的宝贝!
TomEE是一个很棒的项目,它结合了Tomcat的轻量级体验和Java EE功能.我在context.xml中声明了许多JDBC数据源,但是当我想通过JNDI使用该数据源时,我得到了一个异常.那么我如何才能在TomEE中的context.xml中声明JDBC数据源
我的数据源在context.xml中声明
<Resource auth="Container"
name="local_jdbc_db"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mydb"
username="user"
password="pass" />
Run Code Online (Sandbox Code Playgroud)
从JNDI获取数据源的代码
Context contextoInicial = new InitialContext();
Context contexto = (Context) contextoInicial.lookup("java:comp/env");
DataSource ds= (DataSource) contexto.lookup("local_jdbc_db");
Run Code Online (Sandbox Code Playgroud) Android是一款出色的移动平台,它使用Java(有充分理由)是一种非常流行的编程语言.但Java语言正在发展,向前发展,具有小语言改进的版本7已经有几年了,第二年它带来了等待lambda的版本8.
我的问题是:Android会运行Java 7或8还是采用它们的一些构造?
更新:仅适用于非信徒:在Android Kitkat 4.4中,我们可以使用Java 7的好东西:ARM,切换字符串,钻石等.是啊!我希望获得lambdas和Java 8功能不会花费这么长时间