我一直在阅读一些关于Gradle作为Android应用程序的标准构建系统的新采用的文章.好吧,来自标准的Java开发,我通常依赖于jar文件来构建我的项目.然而似乎安卓也有AAR包,这是相当于DLL在Windows操作系统文件,提到这里:
首先,您必须意识到Android平台不允许应用程序级别的"共享库".在"传统"编程语言平台,C,C++,Java中,您可以命名它,我们有这种共享运行时库的机制.(例如,Windows上的DLL,Unix上的DSO,JVM上的Jar等).但是,在Android上,除非您是Google或手机制造商,否则您无法做到这一点(请参阅下面的脚注1).作为应用程序开发人员,这可能是一个基本限制.在构建时和运行时"共享"或"重用"代码是软件工程实践中非常重要的一部分.由于上述限制,这在Android上相当困难(并非不可能,更难).
但是,我对这个概念有些怀疑.我的意思是,开发人员何时应该对其应用程序中包含aar依赖项感兴趣?这种依赖关系是否收紧到SDK最低版本?
例如,在一个项目中,我访问一个COM端口,我使用NDK预编译 .so库.如果我想分享这个实用程序,我是否必须创建一个aar?
如何${project.version}
从父pom中为托管属性解析占位符?我期望它在全局范围内得到解决,因此当父pom具有版本2时,${project.version}
也将被解析为版本2.
在父母pom我有:
<groupId>my.group</groupId>
<artifactId>parent</artifactId>
<version>2</version>
<packaging>pom</packaging>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>my.group</groupId>
<artifactId>dep</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
Run Code Online (Sandbox Code Playgroud)
在我使用的孩子
<parent>
<groupId>my.group</groupId>
<artifactId>parent</artifactId>
<version>2</version>
</parent>
<version>1</version>
<artifactId>child</artifactId>
Run Code Online (Sandbox Code Playgroud)
但是使用了工件my.group.dep.1.jar
而不是my.group.dep.2.jar
.因此,占位符使用托管依赖项解析为项目版本,而不是定义依赖项的项目版本.
这是预期的行为吗?我正在使用maven 3.0.4.
我有多个线程在运行,它访问singleton对象并调用它的方法并在其中传递对象.在方法中,我只对收到的对象进行一些计算.我听说在这种情况下没有任何问题,因为它是无国籍的,而且对所有人都是免费的.
我的问题是它是如何免费的?我想知道多个线程如何在自己的线程中调用共享方法而不覆盖其他线程的传递对象?请明确内存分配和堆栈级别.
class Singleton class{
//no shared class or object variables and only one copy of this Singleton object exists.
Object someMethod(Object o){
//do some calculation or logic on the object o and return some string result
}
}
Run Code Online (Sandbox Code Playgroud) 我需要在Spring上下文XML文件中定义一个由多个bean共享的字符串值.
我是这样做的:
<bean id="aSharedProperty" class="java.lang.String">
<constructor-arg type="java.lang.String" value="All beans need me :)"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
通过传递java.lang.String的构造函数参数来创建java.lang.String bean似乎是kludgy.
有捷径吗?
我知道可以使用PropertyOverrideConfigurer传递此属性,但我想将此属性保留在XML文件中.
使用注释如何将实体中的字段映射到给定对象的字符串"Map"(Hashtable)?该对象已注释,其实例已存储在hibernate数据库中.
我已经找到了使用简单的键和值来定义地图的语法:
<class name="Foo" table="foo">
...
<map role="ages">
<key column="id"/>
<index column="name" type="string"/>
<element column="age" type="string"/>
</map>
</class>
Run Code Online (Sandbox Code Playgroud)
奇怪的是,一个实体作为键,一个简单类型作为值,如下所示:
<class name="Foo" table="foo">
...
<map role="ages">
<key column="id"/>
<index-many-to-many column="person_id"
class="Person"/>
<element column="age" type="string"/>
</map>
</class>
<class name="Person" table="person">
...
<property name="name" column="name"
type="string"/>
</class>
Run Code Online (Sandbox Code Playgroud)
但我不知道如何为元素映射的简单键做到这一点,我不知道如何使用注释来做到这一点.
为什么我不能在控制器中使用它
@RequestMapping(method = RequestMethod.POST)
public String onSubmit(
Model model,
@ModelAttribute("form") Form form,
BindingResult result, HttpServletRequest request)
throws IOException, WriteException, BiffException {
if (result.hasErrors()) {
return "redirect:index.html";
}
}
Run Code Online (Sandbox Code Playgroud)
我明白了:
javax.servlet.ServletException:无法解析名为'dispatcher'的servlet中名为'redirect:index.html'的视图
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1042)
org.springframework.web. servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org. springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(httpServlet.java:717)
org. netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
我以前有这个工作.为什么不是现在?
为了使基本安全功能正常工作,我将以下启动包添加到我的pom.xml中
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
并在application.properties中添加了以下两个属性:
security.user.name = guest
security.user.password = tiger
现在当我点击我的主页时,我得到了登录框并且登录按预期工作.
现在我想实现'注销'功能.基本上,当用户点击链接时,她会被注销.我注意到登录不会在我的浏览器中添加任何cookie.我假设Spring Security为用户创建了一个HttpSession对象.真的吗?我是否需要"使此会话无效"并将用户重定向到其他页面?在基于Sprint Boot的应用程序中实现"注销"功能的最佳方法是什么?
请注意,此代码适用于普通的Spring,但不适用于Spring Boot(v1.3.3),是否有一些我缺少的东西,因为这是从一个有效的弹簧应用程序导入的.下面的代码来自spring boot应用程序
@Entity
@Table(name="project")
public class Project implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id")
private int id;
@Column(name="teamId")
private int teamId;
//private String Rentabiliteit;
@Column
//@Index(name="IProject_status",columnNames="Status")
private String status;
@Column
//@Index(name="IProject_naam",columnNames="Naam")
private String naam;
//public Prototype m_Prototype;
//public Team m_Team;
}
Run Code Online (Sandbox Code Playgroud)
SQL
CREATE TABLE IF NOT EXISTS `project` (
`id` int(11) NOT NULL,
`teamId` int(11) DEFAULT NULL,
`status` varchar(255) DEFAULT NULL,
`naam` varchar(255) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)
错误
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: …
Run Code Online (Sandbox Code Playgroud) 我有一个JPA @MappedSuperClass
并@Entity
扩展它:
@MappedSuperclass
public class BaseClass {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column
private Boolean active;
//getters & setters
}
@Entity
public class Worker extends BaseClass{
@Column
private String name;
//getters & setters
}
Run Code Online (Sandbox Code Playgroud)
active
基类的字段是子实体的标志.应该只在应用程序中加载活动的.然后我写了一个通用的Spring Data Proxy接口:
public interface Dao<T extends BaseClass, E extends Serializable> extends
CrudRepository<T, E> {
Iterable<T> findByActive(Boolean active);
}
Run Code Online (Sandbox Code Playgroud)
这个是应该用于Worker
数据访问的接口,正确扩展前一个:
@Transactional
public interface WorkerDao extends Dao<Worker, Long>{}
Run Code Online (Sandbox Code Playgroud)
好吧,现在在我的逻辑层中,我实现了一个抽象类,它将为我的实体包装CRUD操作的公共代码.我将为每个人提供服务,但我只想继承这个服务abstract
.我想为每个服务连接特定的存储库,并使用abstract
方法将其提供给超类.这就是我的超类的实现方式:
public abstract …
Run Code Online (Sandbox Code Playgroud)